簡體   English   中英

獲取iOS顯示分辨率

[英]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.

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