0

UISplitview を使用してアプリを開発しています。

デバイスフォームを横向きから縦向きに回転させているとき フレームを設定しましたが、設定されていません。ポートレート モードでは、詳細ビューのみが表示されます。ランドスケープ モードのマスター ビューと詳細ビューがあります。

では、ポートレートモードで回転を識別するにはどうすればよいですか?

それはどんな種類のメソッドがありますか?(ビューコントローラーにはwillAnimationRotationtoInterfaceorientationがあるように)

4

2 に答える 2

1

私が理解していることから、あなたはマスターをポートレートビューで見ることができるようにしたいと思っています。

UISplitViewControllerのデザインは、特にポートレートモードでマスタービューを非表示にします。

ここで状況を解決するには2つの方法があります。まず、ViewControllerコントローラーをUISplitViewControllerDelegateとして宣言します。(どのビューコントローラーをデリゲートとして使用しますか?スタックに残っているもの-マスターか詳細かを判断するために)。

次に、いくつかのデリゲートメソッドを確認します。

まっすぐにしたい場合は、次のデリゲートメソッドでマスターをポートレートモードで表示します。

- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation

NOを返します(ビューコントローラーを非表示にしたくない場合もあります)

デフォルトでは、これは横向きの場合はnoであり、これが両方のビューを表示する理由です。縦向きの場合はyesであるため、マスターは表示されません。

そうは言っても、より洗練された解決策は、マスタービューを非表示にして、ナビゲーションバーの上部にボタンを配置することです。ボタンをクリックすると、マスターがポートモードで表示されます。マスタービューの外側をクリックすると、マスターは非表示になります。

これを行うには、上記のBOOLメソッドを使用せず、代わりに次の2つのデリゲートメソッドを実装します。

– splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
– splitViewController:willShowViewController:invalidatingBarButtonItem:

UISplitViewControllerDelegateのドキュメントを検索します。

于 2012-11-23T01:20:53.237 に答える