嗨,我需要获取屏幕宽度和高度。我用过这种方式
UIWindow* window = [UIApplication sharedApplication].keyWindow;
NSLog(@"%f",window.frame.size.width);
NSLog(@"%f",window.frame.size.height);
问题是我有一部 iPhone 4,但分辨率显示为 480x320,这是不正确的......
嗨,我需要获取屏幕宽度和高度。我用过这种方式
UIWindow* window = [UIApplication sharedApplication].keyWindow;
NSLog(@"%f",window.frame.size.width);
NSLog(@"%f",window.frame.size.height);
问题是我有一部 iPhone 4,但分辨率显示为 480x320,这是不正确的......
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 像素
请参阅文档scale
和bounds
。
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