iPhone 5 をサポートするために、いくつかのアプリの更新に取り組んでいます。実行されているデバイスに関係なく、常に iPhone 5 のフレームを持つ UIWindow によって説明されるレイアウトの問題がいくつかありました。たとえばユニバーサル アプリケーションの場合、iPad でも UIWindow のフレームが (0, 0, 320, 568) に設定されます。何が原因なのか、これが本当に私が心配すべきことなのか疑問に思っています。
質問する
438 次
1 に答える
1
ユニバーサルアプリケーションでこれを自分で確認したことはありませんが、次のことを確認してください。
ウィンドウは既にビュー階層の一部です。新しく作成されたウィンドウは、サイズを決定するのに役立ちません (
frame
「-applicationDidFinishLaunching:」の最初にログを記録すると言います)。は、プロパティ
frame
をマージする単なるアクセサです。ビュー (ウィンドウ) に変換が適用されている場合、正しく機能しません。ただし、ウィンドウでは、変換が適用されるのが一般的です。bounds
center
ウィンドウの iOS 描画コードは次のようになります。
CGContextSaveGState(context);
CGContextTranslateCTM(context, [window center].x, [window center].y);
CGContextConcatCTM(context, [window transform]);
CGContextTranslateCTM(context,
-[window bounds].size.width * [[window layer] anchorPoint].x,
-[window bounds].size.height * [[window layer] anchorPoint].y);
[[window layer] renderInContext:context];
CGContextRestoreGState(context);
(テクニカルノート QA1703を参照)
とから最終的なframe
サイズが決定されることがわかります。いくつかの実験を行うと、たとえば、デバイスの向きが変更されても、キーボード ウィンドウの境界が変更されないことがわかります。縦向きと横向きの間のサイズ変更は、 によって決定されます。bounds
transform
transform
一般的に、window.rootViewController.bounds
行く方法です。
于 2013-06-05T08:23:32.573 に答える