我建立一个应用程序,将只对主要观点(包括正常和倒置)的画像。 我在项目设置/ plist中设置此设置,一切工作正常。 但是,我有做的事情一样显示图像/视频数模态的看法,我希望他们能够旋转至所有方向。
我尝试添加了UINavigationController的,但没有运气的类别。 我也加入到调用模式下面的代码中的viewController:
-(BOOL)shouldAutomaticallyForwardAppearanceMethods{
return NO;
}
-(BOOL)shouldAutomaticallyForwardRotationMethods{
return NO;
}
我已经添加了下面的代码,我想允许所有方向的模态viewControllers:
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
我在想什么? 有什么建议?
在iOS 6上,旋转处理发生了变化。 对于您所描述的问题,有几种方法。 首先,在plist中,使除人像所有方向颠倒。
然后,你可以使用下面的解决方案之一:
- 使用的UINavigationController的一个子类,它仅允许旋转为纵向。
- 对于所有控制器指定它们所支持的旋转。
您可以覆盖在你的应用程序委托的方法。 由于每当方向变化或新的视图控制器推该方法被调用你的委托时,你可以用它来暂时启用您的应用程序/禁用横向显示:
// In AppDelegate.h: @property (nonatomic) BOOL portraitOnly; // In AppDelegate.m: - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { return _portraitOnly ? UIInterfaceOrientationMaskPortrait : UIInterfaceOrientationMaskAllButUpsideDown; } // to switch to portrait only: ((AppDelegate *)[UIApplication sharedApplication].delegate).portraitOnly = YES; // to switch to allowing landscape orientations: ((AppDelegate *)[UIApplication sharedApplication].delegate).portraitOnly = NO;
您需要启用旋转对于在层次结构中的祖先在构建设置(为了使VC在层次较低,以能够旋转,如果他们愿意的话)的viewControllers。 然后返回从正确的逻辑shouldAutoRotate
, supportedInterfaceOrientations
和willAnimateRotationToInterfaceOrientation
每个的viewController。
从-return NO shouldAutoRotate
对于不动弹的viewControllers。
-and同样,从返回YES shouldAutoRotate
并返回有效的方位从VC supportedInterfaceOrientations
-使用willAnimateRotationToInterfaceOrientation
做你需要出现新的方向之前做最后一分钟的清理或数据的变化。
随时让我知道,如果你仍然有问题。 希望能帮助到你!
文章来源: iOS 6 - Navigation Controller Landscape Rotations For Some Views While Others Portrait Only