在视图中锁定纵向方向? IOS 7

时间:2013-11-07 03:33:56

标签: ios orientation

因此,我想将主页的方向锁定为纵向,仅限主页。

我正在使用标签栏控制器,因此初始视图是标签控制器,但首先出现的视图控制器是第一个标签,例如主页。

我想这样做,以便当用户转动设备时,它不会旋转到此页面上的横向。但是所有其他页面都可以旋转。

我一直在搜索,似乎没有任何特定的iOS 7,而且特定于iOS 7的那个不起作用......

请帮助,谢谢!

下面的图片描述了这个页面我想要发生的事情。

enter image description here

4 个答案:

答案 0 :(得分:7)

在您的实施中实施以下内容

- (NSUInteger) supportedInterfaceOrientations {

    return UIInterfaceOrientationMaskPortrait;

}

这应该可以为您提供所需的结果!

答案 1 :(得分:6)

使用此代码

@implementation UINavigationController (Rotation_IOS6)

-(BOOL)shouldAutorotate
{

    return UIInterfaceOrientationMaskPortrait;

}

-(NSUInteger)supportedInterfaceOrientations
{

  return UIInterfaceOrientationMaskPortrait;

}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{

 return UIInterfaceOrientationPortrait;

}

@end

答案 2 :(得分:0)

问题是,正如您正确指出的那样,您的主页选项卡不是最顶层的视图控制器。

根据我对这个主题的有限知识,我只能想到以下几点:

  1. 创建另一个标签视图控制器并实施控制方向的方法,即shouldAutorotatesupportedInterfaceOrientations;
  2. 在启动时将此控制器设为第一个;
  3. 使用push segue将其他选项卡向下布线到原始选项卡控制器(支持所有方向的控制器)。

答案 3 :(得分:0)

我想我找到了一个很好的解决方案。 好吧,在我的情况下,我在故事板中使用UISplitViewController作为rootController,但想法是一样的。

  1. SubClass你的rootController(在我的情况下是UISplitViewController)并捕获shouldAutorotate()回调,这样你就可以从那里调用subAutorotate的子视图。
  2. 在要锁定旋转的视图中实现shouldAutorotate()

    class MyUISplitViewController: UISplitViewController {
    override func shouldAutorotate() -> Bool {
        if ((self.viewControllers.last) != nil && (self.viewControllers.last!.topViewController) != nil){
            if (self.viewControllers.last!.topViewController!.respondsToSelector("shouldAutorotate"))
            {
                return self.viewControllers.last!.topViewController!.shouldAutorotate()
            }
        }
        return true
    }
    }
    
  3. 在你的子UIViewController

    override func shouldAutorotate() -> Bool {
            if (UIDevice.currentDevice().userInterfaceIdiom == .Phone)
            {
                return false
            }else{
                return true
            }
        }
    

    如果您想查看支持的方向,您可以使用 supportedsupportedInterfaceOrientations()

    执行相同操作

    编辑:

    不要忘记在Storyboard根viewController中设置“MyUISplitViewController”类