PDA

View Full Version : Where's the beef (where the code?)




toddburch
Apr 7, 2009, 08:21 AM
I just made my first iPhone project. I wrote no code - just Xcode and IB. I dragged a label out, changed the text, set the text color and the background color and ran it. No big deal. Works great in the simulator.

Then, I thought I would change the font of the text. First let down. Apparently, there are only a certain number of fonts that can be used on the iPhone, and the one I wanted wasn't there. So, I tried using some on the list (I googled) that were there. Sometimes, I could see the font changing when I double-clicked the label to edit the text, but any time I clicked off the label, the font always reverted to the default font. I am, however, able to press CMD+I to add italics and CMD+B for bold text when editing the text.

Then I started looking at the generated code, with the mindset to set the font in code, but I could not find anywhere where the label's text was being set, or the text color or back ground color were being set.

I looked in these files:

MyAppAppDelegate.h
MyAppAppDelegate.m
MyAppViewController.h
MyAppViewController.m
MyApp_Prefix.pch
main.m

I could not figure out how to view
MyAppViewController.xib
as double clicking it just opened IB.

Where' the code?



Guiyon
Apr 7, 2009, 08:28 AM
Where' the code?

There isn't any. The xib is a serialized object graph, which is converted into a nib at compile time, which can then be loaded directly at runtime.

tsornin
Apr 7, 2009, 09:12 AM
To change the font of any text field, you'll need to click on the field in interface builder, then press command-T to bring up the fonts picker. Though remember to choose a font that actually exists on the iphone - there are lists around the web if you're not sure which ones they are. (There's also a handy "Fonts" app for the phone itself.)

But yes, the xib file itself is not hackable. To go further with customizing things, you'll need to create IBOutlets in your program to the elements you've set up in Interface Builder, like IBOutlet UILabel *mylabel; That gives you a handle (mylabel) for customizing the label object programmatically.