在iphone中获得屏幕分辨率

时间:2012-12-22 15:17:39

标签: iphone objective-c ios screen-resolution

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

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

问题是我有iPhone 4,但分辨率显示为480x320,这是不正确的......

7 个答案:

答案 0 :(得分:7)

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

关于480x320的屏幕分辨率,它绝对是正确的,因为它可以为您提供逻辑尺寸,或者您可以将点数称为480点x 320点。

点和像素之间存在差异。 Pixel是最小的显示单位。

Point是像素的集合。

如果iPhone 4 1点= 2像素
如果iPhone 3GS 1点= 1像素

请参阅docs for scale and bounds

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

答案 1 :(得分:3)

你必须乘以屏幕的比例:

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

答案 2 :(得分:2)

您需要获取屏幕的比​​例并将其乘以宽度和高度。 E.g:

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

答案 3 :(得分:1)

如果您需要屏幕高度和宽度,请使用:

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;

答案 4 :(得分:1)

CGRect screen = [[UIScreen mainScreen] bounds];
CGFloat width = CGRectGetWidth(screen);
CGFloat height = CGRectGetHeight(screen);

答案 5 :(得分:0)

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

答案 6 :(得分:-1)

通过此代码,您可以获得任何iphone的屏幕高度和宽度,并根据需要在您的应用程序中使用它。

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