iOS專案不支援橫屏的前提下某個介面橫豎屏(旋轉)的解決方案
阿新 • • 發佈:2019-02-04
專案需求(場景): 整個專案不需要旋轉(當然了,所有方向的螢幕適配都做好的情況下是沒問題的,但是沒有必要這麼勞民傷財。)的前提下,播放介面控制器需要支援螢幕的其他方向的旋轉。
解決方案:(分為四步)
步驟1、
設定
targets——>general——>device Orientation
步驟2、
<1>在 AppDelegate.h 裡面 加一個屬性
@property (nonatomic,assign)BOOL allowRotation;//這個屬性標識螢幕是否允許旋轉
<2>在 AppDelegate.m 裡面
-(UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
if (self.allowRotation) {//當允許時,支援所有方向
return UIInterfaceOrientationMaskAll;
}
//否則 就只有豎屏
return UIInterfaceOrientationMaskPortrait;
}
步驟3、
在你想要支援 旋轉的控制器 需要匯入#import "AppDelegate.h"
- (void)viewWillAppear:(BOOL )animated {
[super viewWillAppear:animated];
self.navigationController.navigationBarHidden = YES;
//改變AppDelegate的appdelegete.allowRotation屬性
AppDelegate *appdelegete = (AppDelegate *)[UIApplication sharedApplication].delegate;
appdelegete.allowRotation = YES;
}
- (void )viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
self.navigationController.navigationBarHidden = NO;
AppDelegate *appdelegete = (AppDelegate *)[UIApplication sharedApplication].delegate;
appdelegete.allowRotation = NO;
}
步驟4、當你寫完這些的時候發現好像可以了,還有問題。
但你橫屏播放的狀態下 直接返回上個控制器(pop)的時候.
發現那個控制器也是橫屏的(當你豎屏時,它會轉過來,但是再旋轉就不行了。問題就是pop回來不能使橫屏啊,應該直接豎屏才是啊)
比如pop回的那個控制器叫 TextViewController
在TextViewController.m
裡
//螢幕方向操作
-(UIInterfaceOrientationMask)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
此方法是UIKit
框架中UIViewController.h的公佈方法,iOS 6.0後加入