原因:
这个问题可能有很多可能性。
1)如果您的视图viewController
是 a不是 asubView
的其他视图,则旋转调用可能不会传播到子视图的控制器。rootViewController
navigationController
2)我在某处读到,如果Super
在需要的地方没有正确调用方法,那么它可能是旋转问题的原因,这意味着视图堆栈中与自动旋转相关的所有 ViewController 都必须调用super
方法实现中的方法(即调用[super viewDidLoad]
来自 ViewController 的viewDidLoad
)。
您可以使用以下技巧来处理方向更改。
在 viewWillAppear 中注册一个通知器。
-(void)viewWillAppear:(BOOL)animated{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];}
方向更改将通知以下功能。
- (void)orientationChanged:(NSNotification *)notification{
[self handleOrientation:[[UIApplication sharedApplication] statusBarOrientation]];}
这将调用以下方法,您可以在其中处理方向更改。
- (void) handleOrientation:(UIInterfaceOrientation) orientation {
if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown)
{
//handle the portrait view
}
else if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)
{
//handle the landscape view
}
}