iPad 上的 UIViewController 处理方向 iOS 6.0
Posted
技术标签:
【中文标题】iPad 上的 UIViewController 处理方向 iOS 6.0【英文标题】:UIViewController handle orientation iOS 6.0 on iPad 【发布时间】:2012-10-06 14:01:24 【问题描述】:在我的应用程序中,我需要为 ViewControllers
处理不同的方向。
ViewController1
必须只支持横向。
ViewController2
必须支持横向+纵向。
我在 Summury 项目中启用了所有方向,如下所示:
所以,我将这段代码插入ViewController1
:
- (BOOL)shouldAutorotate
return YES;
- (NSUInteger)supportedInterfaceOrientations
return UIInterfaceOrientationMaskLandscape;
我将这段代码插入ViewController2
:
- (BOOL)shouldAutorotate
return YES;
- (NSUInteger)supportedInterfaceOrientations
return UIInterfaceOrientationMaskAll;
问题是ViewController1
也可以纵向旋转(它应该只支持横向)。
有什么想法吗?
非常感谢大家!
【问题讨论】:
This link may help you 我已经阅读了这个讨论,但对我没有帮助 这有点棘手。这可能会对您有所帮助:***.com/q/12755727/653513 问题解决了吗?我在 ios6 上也有类似的旋转问题 【参考方案1】:你的 viewController 是你的 rootViewController 吗? 如果没有,那可能是你的问题。
如果您的 rootViewController 是 UINavigationController,您应该知道它不会将这些消息转发到它的 topViewController。因此,如果这是您的情况,我建议您使用 UINavigationController 的子类,在其中覆盖这些新方法以转发到 topViewController。
【讨论】:
【参考方案2】:在 iOS 6 之前,这可以正常工作
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientatio n if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) return YES;
else return NO;
但在 iOS 6 中已弃用
现在您应该指定想要的方向并选择演示方向
你应该写
- (NSUInteger)supportedInterfaceOrientations return UIInterfaceOrientationMaskLandscape;
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation return UIInterfaceOrientationLandscapeRight;
希望对你有帮助
祝你好运
【讨论】:
以上是关于iPad 上的 UIViewController 处理方向 iOS 6.0的主要内容,如果未能解决你的问题,请参考以下文章
加载特定于设备的 iPad/iPhone UIViewController nib 失败,带有 .mm 文件
iPad 的 UIPageViewController 上的脏动画