1

アプリがポートレート モードとランドスケープ モードの両方をサポートしていて、アプリをランドスケープで起動した場合、UIViewController のビュー フレーム サイズは、viewDidAppear のポートレートのサイズのままであることがわかります。(例: 748x1024 の代わりに 768x1024)

viewController を作成して表示すると、次の順序でイベントが発生します。

shouldAutorotateToInterfaceOrientation // viewcontroller hasn't received rotate event yet
viewWillLayoutSubviews
viewDidLoad
shouldAutorotateToInterfaceOrientation // viewController now asked to change orientation
viewDidAppear
viewWillLayoutSubviews

これらの一連のイベントを通じて、ビューのフレーム サイズは縦長のままです (境界は正しいですが)。

ビューのフレームが正しく設定されるのはいつですか?

4

2 に答える 2

0

ユーザー インターフェイス要素のレイアウト制約を定義するには、Cocoa Auto Layout システムを使用する必要があります。制約は、「これらのビューは先頭から末尾まで並んでいる」、「このボタンはこの分割ビューのサブビューとともに移動する必要がある」などのユーザー インターフェイス要素間の関係を表します。ユーザー インターフェイスをレイアウトするとき、制約充足システムは、制約を最も厳密に満たすように要素を配置します。

詳細については、このビデオをご覧ください

于 2013-03-10T22:37:04.817 に答える
-1

フレームは回転しません。デバイスを回転させると、フレーム内の境界のみが回転します。使用して確認してください:

self.view.bounds 

デバイスを回転させると変化するのがわかります。

Viewプログラミングガイドを読む必要があります。

http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/WindowsandViews/WindowsandViews.html#//apple_ref/doc/uid/TP40009503-CH2-SW6

これが基本です。

于 2013-03-10T22:32:46.697 に答える