我有一个带有多个视图控制器的应用程序,其中大多数应该能够有任何方向,但需要一个在Portrait中。但是,应用程序忽略了我从supportedInterfaceOrientations()返回的值
我的代码:
UINavigationController subclass:
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
if let topViewController = self.topViewController {
return topViewController.supportedInterfaceOrientations()
}
return [.Landscape, .Portrait]
}
override func shouldAutorotate() -> Bool {
if let topViewController = self.topViewController {
return topViewController.shouldAutorotate()
}
return true
}
UIViewController subclass
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return .Portrait
}
override func shouldAutorotate() -> Bool {
return true
}
当我在景观兼容的视图控制器中并转到应该是纵向的视图控制器时,没有任何反应 - 应用程序不会自动旋转到肖像。
我也从info.plist中删除了支持的界面方向。有什么想法吗?
答案 0 :(得分:1)
您可以在AppDelegate.swift
内设置此功能
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow) -> Int {
return checkOrientationForVC(self.window?.rootViewController?)
}
在这个功能中,您可以执行以下操作:
func checkOrientationForVC(viewController:UIViewController?)-> Int{
if(viewController == nil){
return Int(UIInterfaceOrientationMask.All.rawValue)//All means all orientation
}else if (viewController is SignInViewController){ //Your View controller here
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}else{
return checkOrientationForVC(viewController!.presentedViewController?)
}
}
在“方向”中的“模拟指标”下也可以在故事板中设置方向。您还可以看到Stackoverflow's post.