Xcode 4.5 background image iPhone 4, 4s, 5

16,704

Solution 1

iPhone 5 is retina, just like iPhone 4 and 4S, and the @2x-image will be used automatically for all these devices. It's only the startup-image that is called "-568h@2x" for iPhone 5. You need to write some code to use a different image, something like this would work:

NSString *filename = @"image.png";
CGRect screenRect = [[UIScreen mainScreen] bounds];
if (screenRect.size.height == 568.0f)
    filename = [filename stringByReplacingOccurrencesOfString:@".png" withString:@"-568h.png"];

imageView.image = [UIImage imageNamed:filename];

Solution 2

if you are trying to use [UIImage imageNamed:@"image.png"] and expect [email protected] to be picked automatically from the bundle for iPhone 5, it will not work. Automatic picking works only for iPhone 4 and 4S.

Only the Default image named as [email protected] will be picked automatically in iPhone 5.

for normal images, if you have separate image for iPhone 5, try using this code

CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 568) {
    // code for 4-inch screen
} else {
    // code for 3.5-inch screen
}

Solution 3

I believe it is incorrect to assume that you can apply the -568h@2x trick to all image files. I think it only works for [email protected]. This is the file that iOS looks for at app launch on a 4" display device, as well as the "flag" to enable 4" display support in the SDK. For example, once you include this specific file, your table views will fill the screen.

I have not read anything to suggest that you can simply provide any image with the -568h@2x file name component and have it be used automagically. You'll have to do that yourself based on the screen size, e.g. [UIScreen mainScreen].bounds.size.height.

Share:
16,704
Peter
Author by

Peter

Updated on June 04, 2022

Comments

  • Peter
    Peter almost 2 years

    I have in my viewController.m written the background code:

    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"image.png"]];
    

    And I have the correct names of the different pictures:

    image.png for non-retina display (320x480)
    
    [email protected] for retina display (640x960)
    
    [email protected] for iPhone 5 (640x1136)
    

    But when I run it in the simulator it does not take the [email protected] for iPhone 5 screen it only takes the image@2x for 4s screen and scale it to fit the screen... I dont know if there is any coding to use the image-568h@2x for iPhone 5 screen?

    Im using Xcode 4.5

    • Jigar Pandya
      Jigar Pandya over 11 years
      which version of Xcoe you are using?
    • A-Live
      A-Live over 11 years
      Original question: stackoverflow.com/questions/13055007/… Instead of recreating the questions, consider providing more information in the original one, gaining a little reputation and starting a bounty.
    • Peter
      Peter over 11 years
      version 4.5, what does it mean to starting a bounty?
    • Jigar Pandya
      Jigar Pandya over 11 years
      it means offer more points to someone who answer this question... if you offer 50 bounty that will be added to someone whome you accept ansewr and debited from you account...
  • Peter
    Peter over 11 years
    is the "imageView" here @synthesize? or..?
  • TheQ
    TheQ over 11 years
    Check out this sample-project: dropbox.com/s/gcc081dy0frs20z/RetinaImageTest.zip. If you run it in the different simulator devices, you will see three different (extremely ugly) images :) They should of course be different resolutions, but it's a proof of concept.