1

iPhone 5 をサポートするために、いくつかのアプリの更新に取り組んでいます。実行されているデバイスに関係なく、常に iPhone 5 のフレームを持つ UIWindow によって説明されるレイアウトの問題がいくつかありました。たとえばユニバーサル アプリケーションの場合、iPad でも UIWindow のフレームが (0, 0, 320, 568) に設定されます。何が原因なのか、これが本当に私が心配すべきことなのか疑問に思っています。

4

1 に答える 1

1

ユニバーサルアプリケーションでこれを自分で確認したことはありませんが、次のことを確認してください。

  1. ウィンドウは既にビュー階層の一部です。新しく作成されたウィンドウは、サイズを決定するのに役立ちません ( frame「-applicationDidFinishLaunching:」の最初にログを記録すると言います)。

  2. は、プロパティframeをマージする単なるアクセサです。ビュー (ウィンドウ) に変換が適用されている場合、正しく機能しません。ただし、ウィンドウでは、変換が適用されるのが一般的です。boundscenter

ウィンドウの 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サイズが決定されることがわかります。いくつかの実験を行うと、たとえば、デバイスの向きが変更されても、キーボード ウィンドウの境界が変更されないことがわかります。縦向きと横向きの間のサイズ変更は、 によって決定されます。boundstransformtransform

一般的に、window.rootViewController.bounds行く方法です。

于 2013-06-05T08:23:32.573 に答える