Aaron Brethorst

Round peg in a square hole, rabid generalist.

The Best Cocoa UI Components

| Comments

Update: I just launched a new website that tracks the best custom Cocoa controls for iOS and OS X. It doesn’t have a ton on it yet, but I’m stocking it up with my favorite items. Also, feel free to submit your own!

As a Cocoa developer on Mac OS X, I feel a certain obligation to provide a kickass user experience for my customers. Unfortunately, relying entirely on Apple’s built-in set of controls leaves the experience a little…lacking. Things just seem a little too plain-vanilla and drab if you stay to the well-defined path. Apple seems to feel this way, too, and has gone out of their way to reinvent the wheel with a wide variety of window styles, new button types, date and time controls, icon badges and a whole host of other things that you simply cannot obtain if you hew entirely to the Apple HIG.

This is nothing unique to Apple; you tend to have the same experience when you resort to nothing but built-in controls on Windows, as well. As a result of this, a veritable industry has sprung up on Windows to provide supplemental controls for WPF, Winforms, and Win32. You can even find drop-in Office 2007 UI systems.

Anyway, the following list documents my favorite Cocoa controls on the Mac. These are all consumable by Cocoa applications, and will make your application look and feel far better than it would if you kept to the stock set of controls. Some of these controls are available in newer iterations of OS X, like the calendar control. Unfortunately, some of us happen to still support older (cough) versions of OS X, like Panther, which came out only a bit over three years ago. C’est la vie.

ZFlowLayout - Need a flowing layout view, like the one built into Winforms 2.0? Step right up; the source code’s available, too.

Sparkle - An update manager that works with almost no developer-intervention. I think it took me all of 20 minutes to wire this into iRooster and get the web components working properly, including a custom release notes system. I may have made coffee in the middle of that, too. Very cool.

CTGradient - This is a simple class that wraps all the nasty bits of creating gorgeous gradients on OS X. It also appears to be the new hotness in that I’ve seen a ton of projects incorporating this over the past few months. I am definitely looking forward to including this in iRooster once I drop support for Panther.

PSMTabBarControl - This control is used in Postive Spin Media’s Pandora web content grabber. It duplicates the look-and-feel of the tab bar control used in Safari. Very hot.

WBTimeControl - Stephane Sudre’s open source implementation of Apple’s date time control. I use this in iRooster and am far happier for it.

Omni AppKit - Although it has virtually no documentation, this large collection of AppKit-esque features is phenomenally valuable. The other big downside is that you can’t compile this without OmniBase and OmniFoundation, which can add some serious bloat to your app. It should be entirely possible to rip out specific pieces of functionality, as most of OmniAppKit’s controls aren’t actually dependent on features found in OmniBase or OmniFoundation.

iLifeControls - Although I haven’t actually had an opportunity to use Sean Patrick O’Brien’s iLifeControls suite, I must say that it looks awesome. iLifeControls duplicates a nice chunk of the basic look-and-feel you’d expect from an iLife-like application.