1

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

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

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

4

7 回答 7

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 像素

请参阅文​​档scalebounds

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

于 2012-12-22T15:38:07.343 回答
3

您必须乘以屏幕的比例:

CGSize sz = [UIScreen mainScreen].bounds.size;
float sc = [UIScreen mainScreen].scale;
size_t w = sz.width * sc;
size_t h = sz.height * sc;
于 2012-12-22T15:35:59.363 回答
2

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

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);
于 2012-12-22T15:36:53.193 回答
1

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

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
于 2012-12-22T15:19:42.070 回答
1
CGRect screen = [[UIScreen mainScreen] bounds];
CGFloat width = CGRectGetWidth(screen);
CGFloat height = CGRectGetHeight(screen);
于 2012-12-22T15:33:59.080 回答
0

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

于 2016-08-19T03:21:45.937 回答
-1

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

 [[UIScreen mainScreen] bounds].size.height
 [[UIScreen mainScreen] bounds].size.width
于 2017-06-02T17:39:35.517 回答