我遇到了模态视图旋转的问题。 我在纵向模式下创建一个主视图,然后我创建一个模态视图。一切正常:我可以旋转模态视图,支持所有方向。 如果我以纵向模式创建主视图然后在横向旋转,之后我创建我的模态视图...模式处于纵向模式而不是应该是横向。
主视图和模态视图中的bothAutorotateToInterfaceOrientation都返回YES。
有什么想法吗?
答案 0 :(得分:2)
如果在iOS排队旋转事件之后但在处理旋转事件之前呈现视图控制器,则会发生这种情况。从观察来看,我认为旋转事件特定于当前呈现的视图控制器。
这是一种有用的思考方式:
谢天谢地,这是一个非常简单的解决方案。假设事件队列中有一个旋转事件,并确保您的视图在之后实际显示。您可以通过排队新视图控制器的演示文稿来完成此操作,而不是直接显示它。排队到主队列的块将在已排队的任何事件(如旋转事件)之后执行,但之前用户有机会与您的UI进行交互。
变化:
[self performSegueWithIdentifier: @"firstRun" sender: self];
要:
dispatch_async(dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier: @"firstRun" sender: self];
});
执行此操作后,您会收到此行为:
答案 1 :(得分:0)
我有同样的问题。我终于通过从主视图控制器显示模态视图(而不是从其中一个子视图的视图控制器)来解决它。
答案 2 :(得分:0)
如果出现同样的问题,最后会将模态延迟一秒钟,这样“父级”视图控制器就可以获得正确的方向。
[self performSelector:@selector(presentLogin) withObject:nil afterDelay:1.0]
presentLogin看起来像:
- (void) presentLogin {
LoginVC *loginVC = [[LoginVC alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:loginViewController];
nav.modalPresentationStyle =UIModalPresentationFormSheet;
[self presentViewController:nav animated:YES completion:NULL];
}