Wynn Netherland changelog.com/posts

nib2objc: Convert iPhone NIB files into Objective-C code

Interface Builder is one of the coolest things about Cocoa development. Being able to draw your interfaces visually can save you tons of otherwise tedious code to create layouts and set visual styles for your user interface elements.

Adrian Kosmaczewski, iPhone and iPad developer and creator of Device DNA and several other apps in the App Store turned us on to nib2objc, which is a brilliant name because it takes NIB (or XIB) files from Interface Builder and converts them to Objective-C.

To run from the command line, simply run nib2objc, passing the path to your NIB file:

nib2objc yourfile.xib > code.m

The output is a rather nice looking set of UIKit objects and property assignments to match values from your NIB:

// ...
UIView *view6 = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 460.0)];
view6.frame = CGRectMake(0.0, 0.0, 320.0, 460.0);
view6.alpha = 1.000;
view6.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
view6.backgroundColor = [UIColor colorWithWhite:0.750 alpha:1.000];
view6.clearsContextBeforeDrawing = NO;
// ...

UIButton *button9 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button9.frame = CGRectMake(167.0, 65.0, 72.0, 37.0);
button9.adjustsImageWhenDisabled = YES;
button9.adjustsImageWhenHighlighted = YES;
button9.alpha = 1.000;
button9.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin;
button9.clearsContextBeforeDrawing = NO;
button9.clipsToBounds = NO;
button9.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
// ...
[button9 setTitleShadowColor:[UIColor colorWithWhite:0.000 alpha:1.000] forState:UIControlStateSelected];

// ...
[view6 addSubview:button9];
// ...

Bonus #1

As an added bonus, nib2objc includes a GUI to browse NIB files and even peer into their generated Objective-C code, complete with Fragaria-based syntax highlighting.

GUI

Check the project home page for more details, not to mention the most minimalistic Redmine theme we’ve seen.

Bonus #2

But wait, there’s more. We also stumbled across Adrian’s other project Bluwoki, a Bluetooth peer-to-peer walkie-talkie for iPhone and iPod Touch. Since my daughters get their Dad’s old hand-me-down iPhones, I may have to install this for them to have some fun around the house. Bluwoki is also open source, grab the code on GitHub.

Bluwoki

[Source on GitHub] [Home page]


Discussion

Sign in or Join to comment or subscribe

Player art
  0:00 / 0:00