0

Xcode 6 でランドスケープ アプリを作成しています。iOS 8.3 シミュレーターで実行すると[UIScreen mainScreen].boundsです667x375が、iPhone 6 iOS 8 で実行すると[UIScreen mainScreen].boundsです375x667。多くの要素が画面の境界に合わせてサイズ設定されているため、これが私のアプリに問題を引き起こしています。[UIScreen mainScreen].boundsiOS 8 で変更されたことは知っていますが、それは問題ではありません。667x375デバイスとシミュレーターの両方にある必要があります。コードを提供しますが、問題がどこにあるのかわかりません。

4

3 に答える 3

1
iOS 8.3 iPhone6 Simulator
    Portlait
                           bounds:{{0, 0}, {375, 667}}
                 applicationFrame:{{0, 20}, {375, 647}}
                     nativeBounds:{{0, 0}, {750, 1334}}

    Landscape
                           bounds:{{0, 0}, {667, 375}}
                 applicationFrame:{{0, 0}, {667, 375}}
                     nativeBounds:{{0, 0}, {750, 1334}}

iOS 8.3 iPhone6 Device
    Portlait
                           bounds:{{0, 0}, {375, 667}}
                 applicationFrame:{{0, 20}, {375, 647}}
                     nativeBounds:{{0, 0}, {750, 1334}}
    Landscape
                           bounds:{{0, 0}, {667, 375}}
                 applicationFrame:{{0, 0}, {667, 375}}
                     nativeBounds:{{0, 0}, {750, 1334}}

iOS 8.3 では、シミュレーターとデバイスの結果はまったく同じです。報告された状況が iOS 8 デバイスでのみ発生する場合、アプリケーションのターゲットを iOS 8.3 にするとどうなりますか?

于 2015-04-22T02:47:49.830 に答える
0

画面サイズを iOS 8 以前のサイズに戻すために使用する簡単なクラス メソッドを次に示します (高さと幅を切り替えます)。

+ (CGSize)getScreenSize {

    CGSize screenSizeRef = [[UIScreen mainScreen] bounds].size;

    if (screenSizeRef.width > 450 && UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad) {
        // iPhone 6+ width on portrait is 414
        return CGSizeMake(screenSizeRef.height, screenSizeRef.width);

    }

    if (screenSizeRef.width > 900 && UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {

        return CGSizeMake(screenSizeRef.height, screenSizeRef.width);

    }
    return screenSizeRef;
}

したがって、 を呼び出す代わりに[[UIScreen mainScreen] bounds]、このメソッドを新しいクラスに入れ (プログラムのどこからでもアクセスできるように)、画面サイズ参照を の戻り値に設定します。getScreenSize

于 2015-04-22T03:26:37.827 に答える
0

iOS8では端末の向きに合わせてウィンドウの枠が変わります。667x375 は端末が横向きの場合のサイズだと思います。

于 2015-04-22T02:32:09.883 に答える