改变方向时无法自动旋转开火

时间:2018-07-04 10:50:00

标签: swift xcode orientation shouldautorotate

我正在使用Swift4用Xcode9开发一个应用程序,它最初仅用于iPad,但现在也需要在手机上运行。我需要将手机锁定为人像,而iPad仍为人像/风景。

我已经在使用shouldautorotate函数并根据以下设备返回true或false之前完成了此操作。

override func shouldAutorotate() -> Bool {
   return false
}

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
   return UIInterfaceOrientationMask.all
}

但是,当我改变方向时,它不会触发。这是另一种折旧方法吗?如果是的话,我现在如何限制方向?

2 个答案:

答案 0 :(得分:0)

如果您的视图控制器已嵌入UINavigationControllerUITabBarController中,则将从它们中查询此shouldAutorotate(),因为此容器是最顶部的视图控制器。并且在iOS更新之后,它不会要求并发视图控制器是否需要旋转。因此,您可以使用自定义子类并在运行时创建它,或在情节提要中提供自定义校准:

import UIKit
class CustomNavigationController: UINavigationController {
    override var shouldAutorotate: Bool {
        return self.viewControllers.last?.shouldAutorotate ?? true
    }
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return self.viewControllers.last?.supportedInterfaceOrientations ?? .all
    }        
}

答案 1 :(得分:0)

经过大量的搜索,这对我有用

  getApplicationDropdowns():Observable<IApplicationDropdown> {
    return Observable.forkJoin([
      this.getApplicationStatus().map(res => res),
      this.getApplicationType().map(res => res)
    ]);