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