在iPhone应用程序如何检测设备的屏幕分辨率

在iPhone应用程序中,在设备上运行应用程序时如何检测运行App的设备的屏幕分辨率?

CGRect screenBounds = [[UIScreen mainScreen] bounds]; 

这将给你整个屏幕的分辨率,所以最典型的是320×480的iPhone。 尽pipeiPhone4拥有更大的屏幕尺寸,但iOS仍然支持320×480而不是640×960。 这主要是因为破旧的应用程序。

 CGFloat screenScale = [[UIScreen mainScreen] scale]; 

这会给你屏幕的比例。 对于所有没有视网膜显示器的设备,这将返回一个1.0f,而视网膜显示设备将提供2.0f和iPhone 6加(视网膜高清)将提供一个3.0f。

现在,如果你想获得iOS设备屏幕的像素宽度和高度,你只需要做一件简单的事情。

 CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale); 

通过乘以屏幕的比例,您可以获得实际的像素分辨率。

iOS中的点和像素之间的区别可以在这里阅读。

在应用程序委托中使用它:我正在使用故事板

 - (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; } 

UIScreen类允许您以点和像素查找屏幕分辨率。

屏幕分辨率是以点或像素来衡量的。 它不应该与屏幕大小混淆。 较小的屏幕尺寸可以具有较高的分辨率。

UIScreen的“bounds.width”返回点数的矩形大小 在这里输入图像描述

UIScreen的“nativeBounds.width”以像素为单位返回矩形大小。该值被检测为PPI(每英寸点数)。 显示设备上图像的清晰度和清晰度。 在这里输入图像描述

您可以使用UIScreen类来检测所有这些值。

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)") 

安慰

 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 

请参阅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"); } 

对于iOS 8,我们可以使用这个[UIScreen mainScreen].nativeBounds ,就像这样:

 - (NSInteger)resolutionX { return CGRectGetWidth([UIScreen mainScreen].nativeBounds); } - (NSInteger)resolutionY { return CGRectGetHeight([UIScreen mainScreen].nativeBounds); } 

使用这个代码,它将有助于获得任何types的设备的屏幕分辨率

  [[UIScreen mainScreen] bounds].size.height [[UIScreen mainScreen] bounds].size.width