在iphone中获得屏幕分辨率

嗨,我需要获得屏幕的宽度和高度。 我用这种方式

UIWindow* window = [UIApplication sharedApplication].keyWindow; NSLog(@"%f",window.frame.size.width); NSLog(@"%f",window.frame.size.height); 

问题是我有一个iPhone 4,但分辨率显示为480×320这是不正确的… … –

 float scaleFactor = [[UIScreen mainScreen] scale]; CGRect screen = [[UIScreen mainScreen] bounds]; CGFloat widthInPixel = screen.size.width * scaleFactor; CGFloat heightInPixel = screen.size.height * scaleFactor; 

关于480×320的屏幕分辨率,这是绝对正确的,因为这给你的逻辑大小,或者你可以说大小的点数为480点×320点。

点和像素之间有区别。 Pixel是显示器的最小单位。

Point是像素的集合。

在iPhone 4的情况下1点= 2像素
在iPhone 3GS 1点= 1像素的情况下

请参阅文档的scalebounds

bounds包含屏幕的边界矩形,以点为单位。
scale该值反映从默认逻辑坐标空间转换到此屏幕的设备坐标空间所需的比例因子。 默认的逻辑坐标空间是使用点来测量的,其中一个点大约等于1/160英寸。 如果设备的屏幕具有相当相似的像素密度,则比例因子通常设置为1.0,以便一个点映射到一个像素。 但是,像素密度显着不同的屏幕可能会将此属性设置为更高的值。

你必须乘以屏幕的比例:

 CGSize sz = [UIScreen mainScreen].bounds.size; float sc = [UIScreen mainScreen].scale; size_t w = sz.width * sc; size_t h = sz.height * sc; 

您需要获得屏幕的比例,并将其乘以宽度和高度。 例如:

 UIWindow* window = [UIApplication sharedApplication].keyWindow; UIScreen *screen = window.screen; CGFloat scale = screen.scale; NSLog(@"%f",window.frame.size.width); NSLog(@"%f",window.frame.size.height); NSLog(@"screen pixels width: %f height: %f", window.frame.size.width * scale, window.frame.size.height * scale); 

如果你需要屏幕的高度和宽度,使用这个:

 CGRect screenRect = [[UIScreen mainScreen] bounds]; CGFloat screenWidth = screenRect.size.width; CGFloat screenHeight = screenRect.size.height; 
 CGRect screen = [[UIScreen mainScreen] bounds]; CGFloat width = CGRectGetWidth(screen); CGFloat height = CGRectGetHeight(screen); 

你需要的只是这个: [UIScreen mainScreen].nativeBounds ,来自iOS 8的API

通过这个代码,你可以得到任何iPhone的屏幕高度和宽度,并在你的应用程序中使用它,如你所愿。

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