iOS6中UINavigation视图和UITabbar视图的倒置方向无法正常工作?

17

我在iOS 6中使用导航视图创建了一个应用程序。此外,在应用程序摘要中设置了所有方向选项,甚至使用了

 -(BOOL) shouldAutoRotate

而且

-(NSUInteger) supportedInterfaceOrientaion

在我的视图控制器中有一些方法。当我运行应用程序时,方向除了倒立外都正常工作。我该怎么做才能支持倒立呢?

当我添加UITabBar控制器时,我也遇到了同样的问题。

请分享您的想法。

谢谢

3个回答

17

嗨,我已经找到了解决我的问题的方案。

解决方案: 对于包含UINavigation控制器的应用程序,我只需为UINavigation Controller类创建一个分类,并定义这些方法。

-(BOOL) shouldAutorotate{
    return YES;
}

-(NSUInteger) supportedInterfaceOrientations{

    return UIInterfaceOrientationMaskAll;
}

添加此代码后,我的应用程序支持了所有方向。

同样,我也针对UITabBarController做了同样的操作。通过为UITabBarController创建类别,这也对我起作用。

谢谢。


1

传统上,手机应用程序不支持倒置(为什么要把手机倒过来呢?)- 默认项目将支持纵向和横向两个选项,但不支持倒置。

在Xcode的项目信息查看器中更改此设置即可。有一个支持方向的视觉表示,倒置将被取消选择。


是的,你说得没错。但是我的问题是,在包含 UINavigation 控制器的应用程序中,是否可能支持倒置? - NSUserDefault
可以的。看一下@Venkatesh的答案。你只需要为UINavigationController添加一个类别就可以了。 - Borut Tomazin
7
当设备连接数据线时,UPSideDown可以使用户更容易地访问设备。是这样吗? - Vaibhav Saran
如果我们不需要将iPhone倒过来,为什么苹果会给我们这个选项呢? - sreekanthk
我并没有说你从来没有拿反过来,我是说默认的应用程序模板不支持倒置方向。 - jrturton

0

我认为NSUserDefault的解决方案是不完整的:

来自: https://developer.apple.com/library/ios/qa/qa1688/_index.html

注意: 当修改UIKit类(如UINavigationController)的旋转行为时,应始终首选子类化而不是类别。因为其他类可能依赖于UIKit容器视图控制器的现有行为,类别引入的更改可能会导致意外的行为。

所以我认为最好的解决方案是创建一个子类并添加:

-(BOOL) shouldAutorotate{
     return YES;
}

-(NSUInteger) supportedInterfaceOrientations{

     return UIInterfaceOrientationMaskAll;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接