禁用tabBarController中项目的旋转

时间:2015-12-31 12:27:14

标签: ios swift uitabbarcontroller

我有一个tabBarController,它有4个项目。其中一个是我用AVCaptureSession实现的相机(条形码扫描仪)。因此,如果您选项卡,“扫描仪”选项卡将自动显示相机屏幕。

问题是我无法禁用tabBarController的各个项目的自动旋转。因此,当您旋转设备时,相机的屏幕会旋转,这非常奇怪。

我试过了:

override func shouldAutorotate() -> Bool {

    return false

}

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {

    return .Portrait

}

但没有任何作用。

1 个答案:

答案 0 :(得分:1)

在AppDelegate中添加以下内容

var shouldSupportAllOrientation = false
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask {
    if (shouldSupportAllOrientation == true){
        return UIInterfaceOrientationMask.All
    }
    return UIInterfaceOrientationMask.Portrait
}

然后转到每个视图,并在viewWillAppear

中添加以下内容
let appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate
// false = only portrait
// true = all orientations
appdelegate.shouldSupportAllOrientation = false

<强>更新 要在从横向变为纵向时锁定屏幕,只需在viewWillAppear中添加此代码。

let value = UIInterfaceOrientation.Portrait.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")