Antworten:
CGRect screenBounds = [[UIScreen mainScreen] bounds];
Dadurch erhalten Sie die gesamte Bildschirmauflösung in Punkten, sodass sie für iPhones normalerweise 320 x 480 beträgt. Obwohl das iPhone4 einen viel größeren Bildschirm hat, gibt iOS immer noch 320x480 statt 640x960 zurück. Dies liegt hauptsächlich daran, dass ältere Anwendungen nicht mehr funktionieren.
CGFloat screenScale = [[UIScreen mainScreen] scale];
Dadurch erhalten Sie die Größe des Bildschirms. Für alle Geräte ohne Retina-Displays wird eine 1.0f zurückgegeben, während für Retina-Display-Geräte eine 2.0f und für das iPhone 6 Plus (Retina HD) eine 3.0f angezeigt wird.
Wenn Sie nun die Pixelbreite und -höhe des Bildschirms des iOS-Geräts ermitteln möchten, müssen Sie nur eine einfache Sache tun.
CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale);
Durch Multiplizieren mit der Bildschirmskala erhalten Sie die tatsächliche Pixelauflösung.
Eine gute Lektüre über den Unterschied zwischen Punkten und Pixeln in iOS finden Sie hier .
EDIT: (Version für Swift)
let screenBounds = UIScreen.main.bounds
let screenScale = UIScreen.main.scale
let screenSize = CGSize(width: screenBounds.size.width * screenScale, height: screenBounds.size.height * screenScale)
Mit der UIScreen-Klasse können Sie die Bildschirmauflösung in Punkten und Pixeln ermitteln.
Die Bildschirmauflösung wird in Punkten oder Pixeln gemessen. Es sollte niemals mit der Bildschirmgröße verwechselt werden. Eine kleinere Bildschirmgröße kann eine höhere Auflösung haben.
UIScreens 'bounds.width' gibt eine rechteckige Größe in Punkten zurück
UIScreens 'nativeBounds.width' gibt eine rechteckige Größe in Pixel zurück. Dieser Wert wird als PPI (Punkt pro Zoll) erkannt. Zeigt die Schärfe und Klarheit des Bildes auf einem Gerät an.
Sie können die UIScreen-Klasse verwenden, um alle diese Werte zu erkennen.
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)")
Konsole
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
Ziel 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
Verwenden Sie es in App Delegate: Ich verwende 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;
}
Siehe die UIScreen-Referenz: 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]);
Verwenden Sie diesen Code, um die Bildschirmauflösung eines beliebigen Geräts zu ermitteln
[[UIScreen mainScreen] bounds].size.height
[[UIScreen mainScreen] bounds].size.width