我想在Portrait中设置UIViewController,我试图添加
- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
- (BOOL)shouldAutorotate {
return [UIApplication sharedApplication].statusBarOrientation != UIDeviceOrientationPortrait;
}
但是当我在Landscape中使用手机时,请输入此UIViewController,
我将首先遇到风景,然后旋转到肖像!
但我不希望它显示风景,我希望它立即显示肖像,
有任何错误的设置吗?
修改
我调用了错误ViewController“vcA”,它来自“vcB”
在vcB的viewDidAppear
中,我打电话给
[self presentViewController:vc animated:NO completion:nil];
然后vcA将以横向显示(如果vcB在横向中),
如果添加一些延迟,如:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self presentViewController:vc animated:NO completion:nil];
});
它会显示肖像,但我不知道为什么会这样!
ANSWER
最后,我找到了根本原因!
当我启动应用时,它会处于纵向模式,
启动后,vcB首先是我调用的VC,
手机保持横向状态,因此当vcB中的viewDidAppear
时,它会通话
旋转到风景
同时在viewDidAppear中,我也拨打present:vcA
目前,视图必须同时旋转到横向和呈现 vcA(应该是肖像!!)
然后发生了不好的情况!
解决方案
只需在“vcB”中首次启动旋转,然后在viewDidAppear
中,它只会调用present:vcA
非常感谢!
答案 0 :(得分:5)
答案 1 :(得分:3)