如何检测视图控制器iOS的当前方向?

时间:2019-03-07 06:31:22

标签: ios objective-c screen-orientation

在我的应用程序中,根据视图控制器手动设置方向。除了该视图控制器之外,我还需要检测最顶视图控制器的当前方向(不是设备方向)。有可能吗?

这是我设置方向的方法。

-(BOOL)shouldAutorotate {
    return YES;
}

-(UIInterfaceOrientationMask)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return YES;
}

2 个答案:

答案 0 :(得分:0)

如前所述,您想检查根目录/最顶层VC中的当前方向设置。

因此您可以使用以下代码进行检测:-

if (topViewController.responds(to: Selector(("canRotate")))) else{
        // view is set to portrait 
        return .portrait;
    }
    // // view is set to landscape 
    return .allButUpsideDown;

答案 1 :(得分:0)

您可以通过以下方式设置每个视图控制器的方向:

class YourViewController: UIViewController {

    var _orientations = UIInterfaceOrientationMask.landscape
    override var supportedInterfaceOrientations : UIInterfaceOrientationMask {
    get { return self._orientations }
    set { self._orientations = newValue }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    //...
}

,然后在任何需要的地方读取此属性:

let vc = YourViewController()
print(vc._orientation)