Obj-Compendium


This is a collection of libraries, frameworks and resources for handling common tasks on iOS and OSX. It prefers tools that are simple, small and modular.

ViewControllers

Grids

Current best practice might be to use the Apple provided UICollectionView for iOS 6+

Grid View - GMGridView

A performant Grid-View for iOS (iPhone/iPad) that allows sorting of views with gestures (the user can move the items with his finger to sort them) and pinching/rotating/panning gestures allow the user to play with the view and toggle from the cellview to a fullsize display.

Masonry View - IIIThumbFlow

IIIThumbFlow is a simple iOS view component for presenting images in a vertical flow style. It supports both local and web images. It's optimized in various aspects, you can load unlimited images in IIIThumbFlow. This looks alot like a masonry/pinterest view component.

Masonry View Option 2 - CHGridView

Objective-C reusable scrollable grid view for Cocoa Touch modeled after UITableView.

Hamburger Menu

n.b. - I have not looked into which is best. Just dumping the popular ones here for now.

Side Panel - JASidePanels

JASidePanels is a UIViewController container designed for presenting a center panel with revealable side panels - one to the left and one to the right. The main inspiration for this project is the menuing system in Path 2.0 and Facebook's iOS apps.

From what I can tell, this is the most actively used and supported side panel.

Option 2 - PKRevealController

PKRevealController is a delightful view controller container for iOS, enabling you to present multiple controllers on top of one another.

Option 3 - JTRevealSidebar

A carefully implemented iOS objective-c library to mimic the sidebar layout of the new Facebook app and Path 2.0 app. (archive)

Author notes that this implementation is old and users should generally look for a newer one that takes advantage of technologies in iOS 5 & 6.

Views

Buttons

Advanced Button - FTWButton

FTWButton is a UIControl subclass that lets you easily set color, gradient, text, shadow, border, and icon properties for various states and animates between them.

Blocks for Controls - ALActionBlocks

ALActionBlocks is an Objective-C category on UIControl that allows for handling of control events with blocks. As opposed to using @selectors.

Segmented Controls - HMSegmentedControl

A drop-in replacement for UISegmentedControl mimicking the style of the segmented control used in Google Currents and various other Google products.

Labels

Replacement Label - TTTAttributedLabel

A drop-in replacement for UILabel that supports attributes, data detectors, links, and more

Replacement Label 2 - OHAttributedLabel

UILabel that supports NSAttributedString

Not sure how this differs from TTTAttributedLabel, but TTTAttributedLabel credits this so my intuition is to prefer TTTAttrributedLabel

Advanced Label - THLabel

THLabel is a subclass of UILabel, which additionally allows shadow blur, stroke text and fill gradient

Images

Web Images Option 1 - SDWebImage

Asynchronous image downloader with cache support with an UIImageView category.

This library provides a category for UIImageVIew with support for remote images coming from the web. This seems to be the current best implementation of fetching and caching images from the web.

Web Images Option 2 - EGOImageLoading

Anything involving images pulled from the web should be handled asynchronously. This is a powerful, modular set of classes for handling web images simply. There are base classes to build UIButtons and UIImageViews on. The image caching is handled by a separate cache (EGOCache by default)

It has a nice convenience in that it also caches processed images. So you might have one URL and a few different sizes cached for it.

Icon Views - MOOMaskedIconView

MOOMaskedIconView is a UIView subclass that uses black-and-white masks to draw icons of different styles at any size or resolution. It's like Photoshop layer styles, using the same technique as UITabBar to generate various effects from a single icon mask.

Photoshop layer styles for iOS icons. Stop maintaining a separate file for each color, resolution, and style. MOOMaskedIconView is a UIView subclass that uses black-and-white masks to draw icons of different styles at any size or resolution. It's like Photoshop layer styles, using the same technique as UITabBar to generate various effects from a single icon mask.

Modals & Overlays

Blurred Modal - RNBlurModalView

RNBlurModal adds depth to the traditional modal/alert view. Calling the view is incredibly similar to setting up and showing a UIAlertView. You can also setup your own custom views and display them with a blurry background. The goal is to truly draw the user's focus directly to your alert using natural effects. This project works on all iOS devices at all orientations with ARC.

Action Sheets - BlockAlertsAnd-ActionSheets

Beautifully done UIAlertView and UIActionSheet replacements inspired by TweetBot

Notification - YRDropdownView

YRDropdownView is a view library for displaying stylish alerts, warnings, and errors.

Notification Option 2 - TSMessages

Easy to use and customizable messages/notifications for iOS à la Tweetbot

??? - MKInfoPanelDemo

Non-modal, non-intrusive Info Panel implementation as seen on some "popular" apps

Not certain one this one looks like because I haven't downloaded.

Progress Views

Progress Hud - MBProgressHUD

MBProgressHUD is an iOS drop-in class that displays a translucent HUD with an indicator and/or labels while work is being done in a background thread. The HUD is meant as a replacement for the undocumented, private UIKit UIProgressHUD with some additional features.

Progress HUD Option 2 - SVProgressHUD

SVProgressHUD is a clean and easy-to-use HUD meant to display the progress of an ongoing task.

Alert View - MBAlertView

Simple block-based alerts and huds for iPhone apps.

Alert View 2 - TSAlertView

Progress Bar - KOAProgressBar WARNING

The KOAProgressBar is a custom progress bar for iOS 5.0+ with a full controll over animation.

A UIView progress bar that has a fairly full set of styling features.

WARNING: This code looks to be "All rights reserved" & not freely usable.

Components & Controls

Calendar - TimesSquare

TimesSquare is an Objective-C calendar view for apps.

Time Scroller - TimeScroller

A UI Element that hovers beside the scroll bar of a UITableView (Mimicking the Path app).

Introduction Controller - iPhone-Introduction

A "drop-in" solution for building stylish app introductions and tutorials. Now supports left-to-right and right-to-left languages.

DC Switch - DCRoundSwitch

Awesome Menu - QuadCurveMenu

TableView Additions

Cell Labels - ELCTextFieldCell

A demo project for the UITableViewCell subclass ELCTextFieldCell to help with form creation

Whole Shebang - QuickDialog

QuickDialog - Quick and easy dialog screens for iOS

Pull To Refresh - EGOTableViewPullRefresh

A similar control to the pull down to refresh control created by atebits in Tweetie 2.

There are a handful of ways to implement pull to refresh, so hear are some other examples to examine

Graphs

Graphing Framework - CorePlot

Core Plot is a plotting framework for OS X and iOS. It provides 2D visualization of data, and is tightly integrated with Apple technologies like Core Animation, Core Data, and Cocoa Bindings.

Animation

Animate UIViews

Bouncing Animation - SKBounceAnimation

A CAKeyframeAnimation subclass that lets you quickly and easily set a number of bounces, and start and end values, and creates an animation for you.

SKBounceAnimation is a CAKeyframeAnimation subclass that creates an animation for you based on start and end values and a number of bounces. It’s based on the math and technology in this blogpost which in turn was based partially on Matt Gallagher’s work.

Multi-step Animation - CPAnimationSequence

Describe multi-step UIView animation sequences declaratively.

Data Types

Strings

NLP Date & Time Parser - Moment

Natural Language Date/Time Parser Using Lex/Yacc/C

Moment handles simple and complex expressions. Because it's written in C, it can easily be transferred to many other languages.

NSFormatters - FormatterKit

FormatterKit is a collection of well-crafted NSFormatter subclasses for things like units of information, distance, and relative time intervals. Each formatter abstracts away the complex business logic of their respective domain, so that you can focus on the more important aspects of your application.

Dates

Date Formatting - NSDateHelper

An NSDate category for turning NSDates into plain english NSStrings.

Date Calculations - DateCalculations

Date Calculations for Cocoa Inspired by Ruby on Rails

An NSDate category for creating and manipulating dates with plain English method names (eg. [NSDate endOfWeek], [NSDate yesterday]).

JSON

Apple Default - NSJSONSerialization

I think the consensus is that Apple's implementation is fast enough. But that JSONKit is still slightly faster. Your networking library will generally have some JSON support.

Alternatives

General

Networking

Connection Detection - Reachability

NSURL & JSON - AFNetworking

A delightful iOS and OS X networking framework

RESTful Web - Restkit

RestKit is a framework for consuming and modeling RESTful web resources on iOS and OS X

Toolkits

Dev Kit - SSToolkit

SSToolkit makes life easier. It is made up of various view controllers, views, and categories that I use in all of my apps. Feel free to fork the repo and make it better.

Dev Kit - NimbusKit

The iOS framework that grows only as fast as its documentation

A full featured framework that helps accomplish many common tasks on iOS. The successor to Three20Framework.

Social Sharing - ShareKit

Drop in sharing features for all iPhone and iPad apps

Crash Reports - QuincyKit

Live crash report management for iOS and Mac OS X. AppStore ready on iOS only! Follow news on Twitter

This requires hosting your own PHP server to run. HockeyApp open sources the code and offers the hosting as a paid service.

Beta App Distribution - HockeyKit

A software update kit for iOS and Android. Provided as is. For more functionality and maintained work

This requires hosting your own PHP server to run. HockeyApp open sources the code and offers the hosting as a paid service.

Tests

Behavior Driven Development - Kiwi

Kiwi is a Behavior Driven Development library for iOS development. The goal is to provide a BDD library that is exquisitely simple to setup and use.

May make writing tests easier and clearer.

Routes

Routes & App State - Routable

Routable, an in-app native URL router, for iOS

Higher Order Methods

Misc

Status Bar - MTStatusBarOverlay

A custom iOS status bar overlay seen in Apps like Reeder, Evernote and Google Mobile App

Keychain Access - STKeyChain

Makes dealing with the keychain on iPhone a little simpler.

Keyboard Improvement - BSKeyboardControls

Put controls above the keyboard on your iPhone or iPad app.

Keyboard Improvement 2 - EKKeyboardAvoiding

It's an universal solution for keyboard avoiding for iOS that allows automatically change content inset of UIScrollView and it's subclasses. When keyboard is presented you will be able to see all content of your scroll views.

Syntactic Sugar - ConciseKit

A set of Objective-C additions and macros that helps you write code more quickly.