このソリューションでは、個々のビューコントローラの方向をコントロールする方法について説明します(ナビゲーションコントローラで管理されている場合)。
Xcode 5では、 "Objective-C category"という新しいファイルを作成し、 "Category"を "rotation"に設定し、 "UINavigationController"を "Category on"として選択します。次のコードを記述し、.mファイルで UINavigationController + rotation.h UINavigationController + rotation.m
:
新しいファイルのカップルは、次の名前を持つ、プロジェクト内に表示されます
- (BOOL) shouldAutorotate
{
return [[self topViewController] shouldAutorotate];
}
- (NSUInteger) supportedInterfaceOrientations
{
return [[self topViewController] supportedInterfaceOrientations];
}
このようにして、ナビゲーションコントローラは現在のトップビューコントローラに方向ポリシーを決定させる。
次に、ナビゲーションコントローラによって管理される特定のビューコントローラで、2つの方向関連メソッドをオーバーライドできます。例えば
、特定のビューコントローラのみ縦向きに表示されるものとします。
- (BOOL) shouldAutorotate
{
return NO;
}
- (NSUInteger) supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
は、所望の向きが、プロジェクトの展開先に設定されたものの一つであることを確認してください。 これは十分詳細であり、助けになると思います。
解決策を示すコードを追加することは可能でしょうか? – rkh
@rkh 1つの関数をオーバーライドするサブクラスを作成するコードが必要ですか? –
いいえ、彼は新しいユーザーのように思われるので、私はあなたのソリューションを「コード」で説明するつもりでした...私はいいです:) – rkh