Risposte:
CGRect screenBounds = [[UIScreen mainScreen] bounds];
Questo ti darà la risoluzione dell'intero schermo in punti, quindi sarebbe in genere 320x480 per iPhone. Anche se l'iPhone4 ha una dimensione dello schermo molto più grande, iOS restituisce comunque 320x480 invece di 640x960. Ciò è dovuto principalmente alla rottura delle applicazioni precedenti.
CGFloat screenScale = [[UIScreen mainScreen] scale];
Questo ti darà la scala dello schermo. Per tutti i dispositivi che non hanno Retina Display questo restituirà un 1.0f, mentre i dispositivi Retina Display daranno un 2.0f e l'iPhone 6 Plus (Retina HD) darà un 3.0f.
Ora, se vuoi ottenere la larghezza e l'altezza dei pixel dello schermo del dispositivo iOS, devi solo fare una cosa semplice.
CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale);
Moltiplicando per la scala dello schermo si ottiene la risoluzione effettiva dei pixel.
Una buona lettura della differenza tra punti e pixel in iOS può essere letta qui .
EDIT: (versione per Swift)
let screenBounds = UIScreen.main.bounds
let screenScale = UIScreen.main.scale
let screenSize = CGSize(width: screenBounds.size.width * screenScale, height: screenBounds.size.height * screenScale)
La classe UIScreen ti consente di trovare la risoluzione dello schermo in Punti e Pixel.
Le risoluzioni dello schermo sono misurate in punti o pixel. Non dovrebbe mai essere confuso con le dimensioni dello schermo. Una dimensione dello schermo più piccola può avere una risoluzione più elevata.
La 'bounds.width' di UIScreen restituisce una dimensione rettangolare in Punti 
'NativeBounds.width' di UIScreen restituisce dimensioni rettangolari in pixel. Questo valore viene rilevato come PPI (punto per pollice). Mostra la nitidezza e la chiarezza dell'immagine su un dispositivo.
È possibile utilizzare la classe UIScreen per rilevare tutti questi valori.
Swift3
// Normal Screen Bounds - Detect Screen size in Points.
let width = UIScreen.main.bounds.width
let height = UIScreen.main.bounds.height
print("\n width:\(width) \n height:\(height)")
// Native Bounds - Detect Screen size in Pixels.
let nWidth = UIScreen.main.nativeBounds.width
let nHeight = UIScreen.main.nativeBounds.height
print("\n Native Width:\(nWidth) \n Native Height:\(nHeight)")
consolle
width:736.0
height:414.0
Native Width:1080.0
Native Height:1920.0
Swift 2.x
//Normal Bounds - Detect Screen size in Points.
let width = UIScreen.mainScreen.bounds.width
let height = UIScreen.mainScreen.bounds.height
// Native Bounds - Detect Screen size in Pixels.
let nWidth = UIScreen.mainScreen.nativeBounds.width
let nHeight = UIScreen.mainScreen.nativeBounds.height
ObjectiveC
// Normal Bounds - Detect Screen size in Points.
CGFloat *width = [UIScreen mainScreen].bounds.size.width;
CGFloat *height = [UIScreen mainScreen].bounds.size.height;
// Native Bounds - Detect Screen size in Pixels.
CGFloat *width = [UIScreen mainScreen].nativeBounds.size.width
CGFloat *height = [UIScreen mainScreen].nativeBounds.size.width
Usalo nel delegato app: sto usando lo storyboard
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;
//----------------HERE WE SETUP FOR IPHONE 4/4s/iPod----------------------
if(iOSDeviceScreenSize.height == 480){
UIStoryboard *iPhone35Storyboard = [UIStoryboard storyboardWithName:@"iPhone" bundle:nil];
// Instantiate the initial view controller object from the storyboard
UIViewController *initialViewController = [iPhone35Storyboard instantiateInitialViewController];
// Instantiate a UIWindow object and initialize it with the screen size of the iOS device
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Set the initial view controller to be the root view controller of the window object
self.window.rootViewController = initialViewController;
// Set the window object to be the key window and show it
[self.window makeKeyAndVisible];
iphone=@"4";
NSLog(@"iPhone 4: %f", iOSDeviceScreenSize.height);
}
//----------------HERE WE SETUP FOR IPHONE 5----------------------
if(iOSDeviceScreenSize.height == 568){
// Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone4
UIStoryboard *iPhone4Storyboard = [UIStoryboard storyboardWithName:@"iPhone5" bundle:nil];
// Instantiate the initial view controller object from the storyboard
UIViewController *initialViewController = [iPhone4Storyboard instantiateInitialViewController];
// Instantiate a UIWindow object and initialize it with the screen size of the iOS device
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Set the initial view controller to be the root view controller of the window object
self.window.rootViewController = initialViewController;
// Set the window object to be the key window and show it
[self.window makeKeyAndVisible];
NSLog(@"iPhone 5: %f", iOSDeviceScreenSize.height);
iphone=@"5";
}
} else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// NSLog(@"wqweqe");
storyboard = [UIStoryboard storyboardWithName:@"iPad" bundle:nil];
}
return YES;
}
Vedi il riferimento UIScreen: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIScreen_Class/Reference/UIScreen.html
if([[UIScreen mainScreen] respondsToSelector:NSSelectorFromString(@"scale")])
{
if ([[UIScreen mainScreen] scale] < 1.1)
NSLog(@"Standard Resolution Device");
if ([[UIScreen mainScreen] scale] > 1.9)
NSLog(@"High Resolution Device");
}
NSLog(@"%f",[[UIScreen mainScreen] scale]);
Usa questo codice ti aiuterà a ottenere qualsiasi tipo di risoluzione dello schermo del dispositivo
[[UIScreen mainScreen] bounds].size.height
[[UIScreen mainScreen] bounds].size.width