0

480x960 ピクセル解像度のデバイス用に設計されたアプリケーションが、480x1136 デバイスで実行されます。480x1136 デバイスで実行しているときに、実際の解像度を検出できる必要があります。残念ながら、デバイスの解像度 (「480x1136」) を取得する代わりに、アプリケーションの解像度 ( == '480x960') を取得するため、期待される代わりに[[UIScreen mainScreen] bounds].size * [[UIScreen mainScreen] scale]返されます。'480x960''480x1136'

実際のデバイスの物理解像度を解決するにはどうすればよいですか?

4

2 に答える 2

0

それは醜いですが、それが実際の物理的なメインディスプレイの解像度を解決するために私が見つけた唯一の解決策です(実行中のアプリとは無関係):

#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;
}
于 2015-06-29T06:16:03.420 に答える
0
//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
        }
于 2015-06-28T18:09:26.363 に答える