Chris Ladd

5pods

CGLAlphabetizer

A simple class to easily alphabetize an array of objects, useful for sectioning UITableViews in alphabetical order, like Music and Contacts.

License: MIT

  • Objective C

CGLDefaultsBackedPropertyObserver

Remember the days when you had to override setters and getters? Store defaults keys as constants? Those days are over.

As you might expect, these properties need to be property list objects: that means NSString, NSDictionary, NSArray, NSData, NSDate, or NSNumber. @note that any primitive types encapsulated by NSNumber are automatically supported: integers, floats, and booleans.

License: MIT

  • Objective C

CGLMail

CGLMail makes it easy to send email from any class in your app, without implementing the MFMailComposeViewControllerDelegate protocol all over the place.

License: MIT

  • Objective C

CGLMediaPicker

CGLMediaPicker allows the user to choose a piece of multimedia of an array of types provided by the client, and runs a completion block once the user has either successfully chosen, or cancelled for some reason. Influenced by ClusterPrePermissions, with the goal of being lighter weight, and generally allowing clients to be more hands off.

It takes care of all permissions and UI, and is automatically retained in memory for as long as the user is actively choosing. There is no need for clients to maintain a reference.

It takes care of presenting the right photo picker or camera components. It takes care of asking for permissions, informing the user why permissions are lacking, when they're lacking, and sends them to Settings.app to take care of any problems they might need to.

In short, CGLMediaPicker lets you, the client, say: I would like the user to give me a piece of media. And then lets you sit back and wait for that media to arrive.

License: MIT

  • Objective C

CGLTextViewContainer

CGLTextViewContainer is a lighweight version of Jared Sinclair's excellent workaround to UITextView's notorious update problems.

It's pretty much just wholesale stolen, but it differs in a few ways: it trusts clients enough to grant them access to the internal text view, cutting the amount of code needed by about half. Has-a vs. is-a or pretends-to-be-a. It allows configuration of the text container's height. And it takes into account measurements of the text view's inset.

Original source here: https://github.com/jaredsinclair/JTSTextView

Hopefully, iOS 9 will continue the long chain of text improvements on iOS and we won't need these shenanigans anymore. Until then, this does seem to be a good workaround.

License: MIT

  • Objective C