Bottom Bars in Interface Builder
Bottom bars have been an important user interface element for a while now on Mac OS X. They’re that gray status bar you see at the bottom of many of Apple’s applications including iTunes, Finder, iChat, iCal, Address Book, and iPhoto. The Human Interface Guidelines even has a whole section on bottom bars describing what they are and when to use them. In case you’re not familiar with what they look like, here’s a fresh window with a bottom bar:
In Mac OS X 10.5, Apple added a new API to NSWindow
to add bottom bars, somewhat cryptically named setContentBorderThickness:forEdge:
. There was no support for bottom bars in Interface Builder 3.0 and 3.1, though, so you had to call this method in awakeFromNib
:
[window setContentBorderThickness:22 forEdge:NSMinYEdge];
In Snow Leopard, we finally get Interface Builder support for bottom bars. I somehow missed this in the new IB until just this week, and it’s easy to use.
Select the window object and choose the Size tab of the Info Panel. You can now set the Content Border of the window:
Putting this in the Size tab is a bit non-intuitive to me, and would seem to make more sense in the first Attributes tab. This is is probably one reason why I never noticed this before, but, alas, that’s a minor complaint. I’m glad it’s there.
The HIG also has a section on positioning text and controls in a bottom bar. Unfortunately, IB does not provide automatic snapping guides that enforce this positioning. You have to manually count pixels yourself by holding down the Option key or using a separate tool like xScope, thus I’ve filed:
rdar://7483606: ER: Interface Builder should enforce positioning of controls in the bottom bar