我正在构建一个仅针对主视图(正常和颠倒)的纵向应用程序。
我已在项目设置/Plist 中设置了此设置,一切正常。
但是,我有一些模态视图可以执行诸如显示图像/视频之类的操作,并且我希望它们能够旋转到所有方向。
我尝试为 UINavigationController 添加一个类别,但没有成功。
我还在调用模态的 viewController 中添加了以下代码:
-(BOOL)shouldAutomaticallyForwardAppearanceMethods{
return NO;
}
-(BOOL)shouldAutomaticallyForwardRotationMethods{
return NO;
}
我已将以下代码添加到我想要允许所有方向的模态视图控制器中:
- (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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)