我有一个 UINavigationController,它的视图嵌入到 UIViewController 中。当我旋转设备时,NavigationController 完美地接收到了willRotate
didRotate
事件。但是,在 UINavigationController 内的当前可见视图控制器之前推送的任何 UIViewController 都不会收到旋转事件。
这是问题所在:虽然第二个 viewController 在 navigationController 中可见,但如果我旋转设备,ViewController 会根据旋转更改其布局。当我弹出视图控制器以返回到第一个视图控制器时,第一个视图控制器会根据纵向布局显示自己,因为它不会为旋转视图调用我的重新布局方法。
我不想为旋转更改添加观察者,因为它通常已经正常运行,因为默认旋转方法会自动正常调用......
在这种情况下我能做什么?
我是通过手动调用 willRotate 函数来完成的,但我觉得这不是很好。
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
UIInterfaceOrientation io=[[UIApplication sharedApplication] statusBarOrientation];
[self willRotateToInterfaceOrientation:io duration:0.3];
for(int i=0;i<self.childViewControllers.count;i++){
[[self.childViewControllers objectAtIndex:i]willRotateToInterfaceOrientation:io duration:0.3];
}
}