45

そのため、最新バージョンの XCode を使用して新しいプロジェクトを作成し、アプリの画面サイズをログに記録しようとしました (UI のデバイス タイプを判断するため)。iPhone 5 から次のコードを実行しました。

NSLog(@"%f", [[UIScreen mainScreen] bounds].size.height);

これは480、古い iPhone ファミリの画面サイズである を返しました。シミュレーターで試してみましたが、同じことが起こりました。画面サイズを認識するためにプロジェクトで有効にする必要があるプロパティはありますか?

これは 5 台以上のデバイスでのみ発生します。iPad でゲームを実行すると、1024 の画面サイズが認識されます。

私は、このコードが過去に機能していたことを知っています。まったく同じ方法を使用してしばらく前にゲームを作成しましたが、画面サイズの検出に問題はありませんでしたが、これは XCode 4.x でビルドされました。

追加情報:

次のコードを使用して App Delegate で作成するカスタム ビュー コントローラーを使用しています。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    if([Global getDevice] == 1)
    {
        //iPhone 5+
        self.window.rootViewController = [[FivePlus alloc] initWithNibName:nil bundle:nil];

    }
    else if([Global getDevice] == 2)
    {
        //iPhone 4S-
        self.window.rootViewController = [[FourSMinus alloc] initWithNibName:nil bundle:nil];
    }
    else
    {
        //iPad
        self.window.rootViewController = [[iPad alloc] initWithNibName:nil bundle:nil];
    }

    [[self window] makeKeyAndVisible];

    // Override point for customization after application launch.
    return YES;
}

Global.h の getDevice メソッド:

+ (int)getDevice
{
if([[UIScreen mainScreen] bounds].size.height == 568 || [[UIScreen mainScreen] bounds].size.width == 568)
    {
        return 1;
    }
    else if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        return 3;
    }
    else
    {
        return 2;
    }
}
4

6 に答える 6

4

iOS は、多くの場合、ユーザーの画面サイズを「ふり」ます。Apple は、たとえば、ある解像度に適した起動イメージがない場合、その解像度でアプリが適切に動作するように設計されていないため、アプリを別のサイズで実行すると想定しています。極端な場合、iPad で実行されている iPhone のみのアプリは 32​​0 x 480 を返します。

アプリケーションに関する限り、報告される画面サイズはアプリケーションで使用可能な画面サイズです。320 x 480 と報告された場合、それがアプリケーションで使用できるものです。480 ピクセル未満で描画されたものは表示されません。

たとえば、適切なサイズの起動イメージを提供することで、必要な解像度でアプリを実行するように iOS を説得します。iPhone 6 および 6+ の場合、ユーザーはそれらを「ズーム」モードで実行できるため、iPhone 5 または 6 の画面 (物理的に大きいだけ) を持っているかのように動作します。

于 2016-03-03T10:58:57.093 に答える