我有一个tabBarController,它有4个项目。其中一个是我用AVCaptureSession实现的相机(条形码扫描仪)。因此,如果您选项卡,“扫描仪”选项卡将自动显示相机屏幕。
问题是我无法禁用tabBarController的各个项目的自动旋转。因此,当您旋转设备时,相机的屏幕会旋转,这非常奇怪。
我试过了:
override func shouldAutorotate() -> Bool {
return false
}
和
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return .Portrait
}
但没有任何作用。
答案 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")