在平時(shí)開發(fā)中股耽,我們經(jīng)常會(huì)忽略一個(gè)問題根盒,就是當(dāng)我們的App內(nèi)有需要橫屏的頁面,而首頁只支持豎屏物蝙,在plus的設(shè)備上炎滞,桌面是運(yùn)行橫屏的,此時(shí)進(jìn)入App诬乞,首頁布局會(huì)出錯(cuò)册赛。在延伸一下這個(gè)問題,當(dāng)我們開發(fā)一款支持iPad的App時(shí)震嫉,如何保證App在任何情況下進(jìn)入首頁都保持豎屏狀態(tài)森瘪?
方法一、
我們可以這樣設(shè)置首頁的控制器:
// 必須兩個(gè)都是 .portrait才可以
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .portrait
}
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
return .portrait
}
如果有UITabBarController票堵,這樣設(shè)置:
// 必須兩個(gè)都是 .portrait才可以
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return selectedViewController?.supportedInterfaceOrientations ?? .portrait
}
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
return selectedViewController?.preferredInterfaceOrientationForPresentation ?? .portrait
}
如果有 UINavigationController扼睬,這樣設(shè)置:
// 必須兩個(gè)都是 .portrait才可以保證首頁一定是豎屏
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return topViewController?.supportedInterfaceOrientations ?? .portrait
}
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
return topViewController?.preferredInterfaceOrientationForPresentation ?? .portrait
}
方法二、
設(shè)置一個(gè)全局的變量
var isAllowLandscape: Bool = false
在AppDelegate中設(shè)置:
// 控制整個(gè)App所允許旋轉(zhuǎn)的方向
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
return isAllowLandscape ? .allButUpsideDown : .portrait
}
在需要的時(shí)候改變 isAllowLandscape的值即可悴势。