1. 程式人生 > >iOS專案不支援橫屏的前提下某個介面橫豎屏(旋轉)的解決方案

iOS專案不支援橫屏的前提下某個介面橫豎屏(旋轉)的解決方案

專案需求(場景): 整個專案不需要旋轉(當然了,所有方向的螢幕適配都做好的情況下是沒問題的,但是沒有必要這麼勞民傷財。)的前提下,播放介面控制器需要支援螢幕的其他方向的旋轉。

解決方案:(分為四步)

步驟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後加入