当项目设置允许所有旋转时禁用特定视图控制器中的旋转
Posted
技术标签:
【中文标题】当项目设置允许所有旋转时禁用特定视图控制器中的旋转【英文标题】:Disable Rotation in a specific View Controller when Project settings allows all rotation 【发布时间】:2014-01-15 10:01:16 【问题描述】:一个问题是asked earlier。我遇到了同样的问题,即电影播放器没有旋转,因为项目属性不允许旋转。这个问题只在 iPhone 上的 ios7 中遇到过,所以我正在尝试另一种解决方法,我在项目属性中启用所有方向,但问题是当我通过这样的功能禁用其他视图控制器中的旋转时
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
return FALSE;
// Tell the system what we support
-(NSUInteger)supportedInterfaceOrientations
return UIInterfaceOrientationPortrait;
- (BOOL) shouldAutorotate
return NO;
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
return UIInterfaceOrientationPortrait;
视图控制器仍在旋转,我想这是因为它在项目属性中是允许的。
所以问题是..
如何在特定的媒体播放器视图控制器中禁用旋转 什么时候项目设置允许所有旋转?
或
如何在特定的媒体播放器视图控制器中覆盖旋转 在项目属性(禁用旋转)上不起作用 iOS7
【问题讨论】:
【参考方案1】:您可以在它为我工作的 AppDelegate 类中实现以下方法:
- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
if ([[window.rootViewController presentedViewController] isKindOfClass:[MPMoviePlayerViewController class]])
return UIInterfaceOrientationMaskAllButUpsideDown;
else
return UIInterfaceOrientationMaskPortrait;
【讨论】:
你的回答是正确的,我真的很感谢你。但有一个问题我希望你帮助我。也就是说,当我在媒体播放器上单击完成时,我以前的 ViewController 处于横向模式,这是一个问题。我该如何解决? 你需要在 -(void)myMovieFinishedCallback:(NSNotification*)aNotification 中管理这个 谢谢.. 给你点赞.. 如果我需要更多帮助,还会有更多。因为你节省了我一半的时间。再次感谢 顺便说一句,我确实有这个通知设置,但仍然不知道我应该设置什么。虽然我确实调用了'[self shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationPortrait]; [self willRotateToInterfaceOrientation:UIInterfaceOrientationPortrait 持续时间:0.0];'在前一个控制器的“viewWillAppear”上 那么我应该在 PlayerFinished Notification 中设置什么?【参考方案2】:当我们谈论方向时,它们是图片中的两件事:
设备方向 接口方向 顾名思义,设备方向说明设备的方向,接口方向说明您的应用程序呈现其界面的方向。
您正在做的是,您的应用支持所有方向。您必须勾选项目中的所有方向。
现在,当您将设备的方向从纵向更改为横向时,当您以编程方式将 interfaceOrientation 设置为纵向模式时,就会发生这种情况。随着设备方向的变化,状态栏的方向也会发生变化。但是由于您将应用程序的界面限制为纵向,因此它不会改变其方向..
所以你可以这样做:
取消选中您应用的横向支持并检查问题是否仍然存在。 让我知道您执行第一步时发生了什么:)
【讨论】:
以上是关于当项目设置允许所有旋转时禁用特定视图控制器中的旋转的主要内容,如果未能解决你的问题,请参考以下文章