UIViewController
それ自体で利用可能なメソッドを使用しないのはなぜですか?
必要な向きに応じて、特定のクラスでこれらのメソッドを使用できます。
- (BOOL)shouldAutorotate
- (NSUInteger)supportedInterfaceOrientations
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
AppDelegate には、既にこのメソッドがあり、他の場所では必要ありません。
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskAllButUpsideDown;
}
Apple ドキュメントから
このメソッドは、自身を明示的に指定していないビュー コントローラーに使用するインターフェイスの向きを返します。ビュー コントローラが supportedInterfaceOrientations または shouldAutorotateToInterfaceOrientation: メソッドをオーバーライドしない場合、このメソッドによって返される方向が使用されます。
このメソッドを実装しない場合、アプリケーションは、アプリの Info.plist の UIInterfaceOrientation キーの値をデフォルトのインターフェイスの向きとして使用します。
使用している場合は更新UINavigationController
この場合、カスタムを実装する必要があります。これは、さまざまなビューコントローラーに提供したインターフェイスの向きを乱す可能性があるUINavigationController
ためです。navigationController
CutomNavigationController.h
#import <UIKit/UIKit.h>
@interface CutomNavigationController : UINavigationController
@end
CutomNavigationController.m
#import "CutomNavigationController.h"
@interface CutomNavigationController ()
@end
@implementation CutomNavigationController
//overriding shouldRotate method for working in navController
-(BOOL)shouldAutorotate
{
return [self.visibleViewController shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [self.topViewController supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [self.topViewController preferredInterfaceOrientationForPresentation];
}
最後に、これを で使用CustomNavigationController
します。これは、すべてのビュー コントローラーのAppDelegate
として参照されます。navigationcontroller