Search code examples
iphoneipaduilabelxibuniversal

Position UILabel when app is opened in iPad


I have a universal iPhone/iPad app. On the main menu I have a UIImage and UILabel that show the current weather conditions outside; the UILabel shows the current temperature.

I am using the same XIB for both versions, I made all of the graphics I am using a high resolution so they scale good for the iPad.

On the iPhone version, right under the UIImage the label is centered, which is what I want it to do. When it loads in the iPad, the UIImage gets a big bigger, but the label stays in the same position, to the left of the screen, not centered under the bigger image. I have tried many different things in IB to get it to center, and I cannot get it to.

Would it also be possible to make the text size bigger when loaded on the iPad?

Here are some images to portray what I am talking about:

iPhone version: http://img855.imageshack.us/i/iphonei.png/

iPad version: http://img163.imageshack.us/i/ipadh.png/


Solution

  • Not sure about your label issue, but to vary text size for iPad create a function to test if you're on an iPad and then use that to vary your code as required. Here's a function to to do the job.

    BOOL isIPad()
    {
        if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
        {
            return YES;
        }
        return NO;
    }
    

    And then just write some conditional code. For example:

    UIButton *infoCircle;
    
        if (isIPad())
        {
            infoCircle =  [UIButton buttonWithType:UIButtonTypeInfoDark];
        }
        else
        {
            infoCircle =  [UIButton buttonWithType:UIButtonTypeInfoLight];
        }
    

    In your case, you'll want to adjust the label font size with something like:

    if (isIPad())
    {
          [[self mainLabel] setFont: [UIFont systemFontOfSize: 18.0]];
    }
    else
    {
          [[self mainLabel] setFont: [UIFont systemFontOfSize: 14.0]];
    }
    

    If Interface Builder is giving you grief, you can also use the same approach to reposition the UILabel programmatically. Sometimes this is quicker, especially once your interface has settled down.