Search code examples
iphoneiosipaduiimagescale

what is the code to detect whether ios app running in iPhone, iPhone Retina display, or iPad?


what is the code to detect whether ios app running in iPhone, iPhone Retina display, or iPad?

Background:

  • for my iPhone application I have defined in XCode target/summary page the specific images for: iPhone launch image, iPhone retina display launch image, iPad portrait & iPad landscape.

  • in the main view there is a UIImageView subview I use for the background image - currently I'm specifying this in XCode (not programmatically) by selecting the image I use for the iPhone launch image.

So I'm asking how to tell which one I'm running within so that in the viewDidLoad I can load the appropriate resolution background image. Then there should be a seamless transition between the background image for app startup, and the background of the app main screen once it's started.


Solution

  • You can use [[UIDevice currentDevice] userInterfaceIdiom] to determine whether you're running on an iPhone/iPod touch or an iPad.

    There's often no need to determine directly whether you're on a retina display because UIImage handles that automatically when you use imageNamed and append "@2x" to your high resolution image file names (see Supporting High-Resolution Screens in the Drawing and Printing Guide for iOS).

    If you really need to know which resolution the screen has, use UIScreen's scale method.