[英]Getting iOS display resolution
在480x1136的設備上執行為480x960像素分辨率的設備設計的應用程序。 在480x1136設備上運行時,我需要能夠檢測實際分辨率。 不幸的是,我沒有獲得設備分辨率('480x1136'),而是得到了應用程序分辨率( == '480x960'
),因此[[UIScreen mainScreen] bounds].size * [[UIScreen mainScreen] scale]
返回了'480x960'
預期的'480x1136'
如何解決實際設備的物理分辨率?
//Get device screen resolution for this specific case
CGRect boundsOfScreen=[[UIScreen mainScreen] bounds];
if (boundsOfScreen.size.width == 480 && boundsOfScreen.size.height == 960 ) {
//iPod Touch 3.5-inch
}
else if (boundsOfScreen.size.width == 480 && boundsOfScreen.size.height == 1136) {
//iPod Touch 4-inch
}
但是,這是丑陋的,但是,這是我發現的解決實際物理主顯示分辨率的唯一解決方案(與正在執行的應用程序無關):
#import <sys/utsname.h>
bool getDeviceNativeResolution(CGSize& res) {
utsname si;
uname(&si);
if((0 == strncmp(si.machine, "iPod7", 5)) || (0 == strncmp(si.machine, "iPhone7", 7)))
res = CGSizeMake(1080, 1920);
else if((0 == strncmp(si.machine, "iPod6", 5)) || (0 == strncmp(si.machine, "iPhone6", 7)))
res = CGSizeMake(750, 1334);
else if((0 == strncmp(si.machine, "iPod5", 5)) || (0 == strncmp(si.machine, "iPhone5", 7)))
res = CGSizeMake(640, 1136);
else if((0 == strncmp(si.machine, "iPod4", 5)) || (0 == strncmp(si.machine, "iPhone4", 7)))
res = CGSizeMake(640, 960);
else
return false;
return true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.