在iOS開發(fā)的過程中暂衡,有時候會遇到固定的一個界面需要能隨意切換橫豎屏暇屋,而且其他的界面都不可以切換的時候。就必須在工程文件中如下圖存璃,
這個時候的整個項目就都是處于可以橫豎屏切換的狀態(tài)。所以此時雕拼,你必須通過在AppDelegate.m文件中用代碼來控制界面的橫切屏切換纵东。
- (UIInterfaceOrientationMask)application:(UIApplication)application supportedInterfaceOrientationsForWindow:(UIWindow)window {
if(_isLandscape) {
//判斷當前的界面橫豎屏狀態(tài)
UIDeviceOrientation orientation = [UIDevicecurrentDevice].orientation;
if(orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight){
return UIInterfaceOrientationMaskLandscape;
}else{//橫屏后旋轉屏幕變?yōu)樨Q屏
return UIInterfaceOrientationMaskPortrait;
}
}else{
return UIInterfaceOrientationMaskPortrait;
}
}
UIDeviceOrientation 是機器硬件的當前旋轉方向 這個你只能取值 不能設置
這個時候,你就可以通過設置 _isLandscape的值來控制界面是否能進行橫豎屏的切換啥寇。
typedef NS_ENUM(NSInteger, UIDeviceOrientation) {
UIDeviceOrientationUnknown, //系統(tǒng)無法判斷目前Device的方向偎球,有可能是斜置
UIDeviceOrientationPortrait, // 設備垂直方向上,按鈕在底部
UIDeviceOrientationPortraitUpsideDown, // 設備垂直方向上辑甜,按鈕在頂部
UIDeviceOrientationLandscapeLeft, // 設備水平方向衰絮,按鈕在右邊
UIDeviceOrientationLandscapeRight, // 設備水平方向,按鈕在左邊
UIDeviceOrientationFaceUp, // 面向設備的扁平化磷醋,屏幕向上
UIDeviceOrientationFaceDown // 面向設備的扁平化猫牡,屏幕向下
} __TVOS_PROHIBITED;
在ViewController里面,你可以通過獲取AppDelegate里面的_isLandscape值來控制屏幕能否橫豎屏切換
- (void)backToPortrait : (BOOL)isLan{//回到豎屏
AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.isLandscape = isLan;
}
初次寫博客邓线,可能表述上有些不清晰淌友,需要的話可以留言,大家多討論褂痰。謝謝亩进。