横屏模态框在关闭后会切换到竖屏模式

3
我有一个UINavigationController,我以模态方式呈现它。模态视图在设备当前的方向下正确显示。但是当我关闭模态视图时,它立即旋转到纵向,并动画到Home按钮,该按钮在横向模式下位于左侧或右侧。在打开模态视图时导航一切正常,旋转也正常,只是关闭时不正常。
如何让模态视图简单地在设备当前方向下关闭?
我已经包含了一个图像,显示了在横向模式下解雇模态视图的情况。
之前: View being dismissed 期间: View during dismissal 如您所见,布局非常混乱。NavigationController中当前呈现的视图甚至没有调整为纵向屏幕尺寸。
值得一提的是,在此时我正在呈现一个新的storyboard。
    _storyboard = [UIStoryboard storyboardWithName:storyBoardName bundle:resourceBundle];
    _rootViewController = [_storyboard instantiateInitialViewController];
   [_sourceViewController presentViewController:_rootViewController animated:animated completion:nil];

你是只在横屏模式下使用第一个屏幕吗? - SNR
检查Storyboard中其他视图控制器支持的方向。 - k06a
我不这么认为,所有的屏幕都可以切换到除了倒置以外的任何方向。 - Brenwell
我已经将以下代码放置在所有的视图控制器和导航控制器中:- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; } -(BOOL)shouldAutorotate { return YES; } -(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskAllButUpsideDown; } - Brenwell
第二张截图中底层视图控制器也不可见,这是否也让人感到奇怪? - Brenwell
1个回答

1
我相信我已经解决了自己的问题。从后台线程更新UI-经典做法。发生的情况是,在委托方法 - (void)didLogin; 内部触发了dismiss方法。这个委托方法在后台线程上进行网络调用后触发。因此,当我尝试更新UI时,我不再处于主线程上,这导致了一些非常不寻常的UI行为。 [[NSOperationQueue mainQueue] addOperationWithBlock:^ {}]; 这挽救了局面。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接