簡體   English   中英

在iPhone中獲取屏幕分辨率

[英]Getting the screen resolution in iphone

嗨,我需要獲取屏幕的寬度和高度。 我用這種方式

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

請參考文檔了解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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM