我正在使用Swift4用Xcode9开发一个应用程序,它最初仅用于iPad,但现在也需要在手机上运行。我需要将手机锁定为人像,而iPad仍为人像/风景。
我已经在使用shouldautorotate函数并根据以下设备返回true或false之前完成了此操作。
override func shouldAutorotate() -> Bool {
return false
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.all
}
但是,当我改变方向时,它不会触发。这是另一种折旧方法吗?如果是的话,我现在如何限制方向?
答案 0 :(得分:0)
如果您的视图控制器已嵌入UINavigationController
或UITabBarController
中,则将从它们中查询此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)
]);