すべてのビューコントローラでローテーションを有効または無効にする場合は、UINavigationController
をサブクラス化する必要はありません。 は、代わりに使用します。あなたのAppDelegate
で
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
を。あなたが親ビューコントローラ上のすべてのアプリ内の向きが異なる方向(例えばUINavigationController
スタック)をサポートすることを計画している場合
あなたの親ビューコントローラで、次の方法と組み合わせてAppDelegate
から
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
を使用する必要があります。
- (BOOL)shouldAutorotate
と
- (NSUInteger)supportedInterfaceOrientations
しかし、あなたは(私のような)同じナビゲーションスタックに異なるチルドレンViewControllersで異なる向きの設定をするように計画している場合、あなたは、ナビゲーションスタック内の現在のViewControllerをチェックする必要があります。
私は私のUINavigationController
サブクラスで、次の作成した:
あなたはナビゲーションスタックに現在あるものをビューコントローラインターセプト何とかしなければならない提示ビューコントローラの子どもViewControllers回転設定からもう制御できませんので
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
int interfaceOrientation = 0;
if (self.viewControllers.count > 0)
{
DLog(@"%@", self.viewControllers);
for (id viewController in self.viewControllers)
{
if ([viewController isKindOfClass:([InitialUseViewController class])])
{
interfaceOrientation = UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}
else if ([viewController isKindOfClass:([MainViewController class])])
{
interfaceOrientation = UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}
else
{
interfaceOrientation = UIInterfaceOrientationMaskAllButUpsideDown;
}
}
}
return interfaceOrientation;
}
。それは私がやったことです:)希望が助けてくれる!
これはほとんど私のために働いています。問題は、私が横になっている場合でも、タブを肖像画に変えてもそれはまだ景観にあるということです。回転する肖像画はそれを修正し、それは景色には戻って回転しませんが、最初にロードするときに肖像画にする必要があります。 – Ryan
私はあなたがそれを回転させるために何をする必要があるのかよく分かりませんが、私はあなたがそれを行うと確信しています - (void)viewWillLayoutSubviews。私はメモリからそのメソッド名に正確に当てはまらないかもしれません。このコードを使用した私自身のビューは、回転すると完全に変化しており、そのメソッドを使用して、それらをポートレートモードに再設定します。あなたはまた、何かを試してみるかもしれません - viewWillDisappear。たぶん[self.view setNeedsDisplay]。私は現時点でXcodeではないので、これらはあなたのケースで探求するアイデアです。 –
ニース!魅力的な作品! – Dennso