【发布时间】:2012-09-15 20:22:53
【问题描述】:
当用户观看完视频(它允许在横向模式下观看)时,我使用此代码强制将方向更改回纵向,然后将视频视图控制器从导航控制器中弹出:
//set statusbar to the desired rotation position
[[UIApplication sharedApplication] setStatusBarOrientation:UIDeviceOrientationPortrait animated:NO];
//present/dismiss viewcontroller in order to activate rotating.
UIViewController *mVC = [[[UIViewController alloc] init] autorelease];
[self presentModalViewController:mVC animated:NO];
[self dismissModalViewControllerAnimated:NO];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
在iOS 5.1.1 之前,这一直运行良好。我什至尝试使用新的呈现/解雇方法,在另一篇文章中读到现在应该使用这些方法:
[self presentViewController:mVC animated:NO completion:NULL];
[self dismissViewControllerAnimated:NO completion:NULL];
问题是它根本不起作用。在我将视频查看器旋转到横向然后弹出它之后,我的设置视图(表格视图控制器)又回来了,但也处于横向模式。
我什至尝试过Here的提示
“setStatusBarOrientation:animated: 方法并没有被彻底弃用。但是它现在只有在最顶部的全屏视图控制器的 supportedInterfaceOrientations 方法返回 0 时才有效。这将确保状态栏方向一致的责任置于调用者的手。”
所以我尝试设置一个标志来强制 supportedInterfaceOrientations 到 return 0(在调用上面的第一个代码块之前),但它也不起作用。
有人对此有解决方案吗? 感谢您的时间和精力。
【问题讨论】:
-
完全相同的问题,但和你一样,我没有找到解决方案。有人吗?
标签: objective-c cocoa-touch ios6 uiinterfaceorientation autorotate