Réponses:
CGRect screenBounds = [[UIScreen mainScreen] bounds];
Cela vous donnera la résolution entière de l'écran en points, donc ce serait généralement 320x480 pour les iPhones. Même si l'iPhone4 a une taille d'écran beaucoup plus grande, iOS restitue 320x480 au lieu de 640x960. Ceci est principalement dû à la rupture des anciennes applications.
CGFloat screenScale = [[UIScreen mainScreen] scale];
Cela vous donnera l'échelle de l'écran. Pour tous les appareils qui n'ont pas d'écrans Retina, cela renverra un 1.0f, tandis que les appareils Retina Display donneront un 2.0f et l'iPhone 6 Plus (Retina HD) donnera un 3.0f.
Maintenant, si vous souhaitez obtenir la largeur et la hauteur des pixels de l'écran de l'appareil iOS, il vous suffit de faire une chose simple.
CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale);
En multipliant par l'échelle de l'écran, vous obtenez la résolution réelle en pixels.
Une bonne lecture sur la différence entre les points et les pixels dans iOS peut être lue ici .
EDIT: (Version pour 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 vous permet de trouver la résolution de l'écran en points et pixels.
Les résolutions d'écran sont mesurées en points ou pixels. Il ne doit jamais être confondu avec la taille de l'écran. Une taille d'écran plus petite peut avoir une résolution plus élevée.
'Bounds.width' de UIScreen renvoie la taille rectangulaire en points
'NativeBounds.width' de UIScreen renvoie une taille rectangulaire en pixels. Cette valeur est détectée comme PPI (point par pouce). Affiche la netteté et la clarté de l'image sur un appareil.
Vous pouvez utiliser la classe UIScreen pour détecter toutes ces valeurs.
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)")
Console
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
Objectif c
// 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
Utilisez-le dans App Delegate: j'utilise le 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;
}
Consultez la référence 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]);
Utilisez ce code, il vous aidera à obtenir la résolution d'écran de tout type d'appareil
[[UIScreen mainScreen] bounds].size.height
[[UIScreen mainScreen] bounds].size.width