今業(yè)務(wù)需求是:app啟動(dòng)的時(shí)候加載的是一個(gè)橫向的游戲,根據(jù)后臺(tái)參數(shù),加載新的windows.rootviewcontroller,這個(gè)新的vc里面放了一個(gè)wkwebview,加載一個(gè)豎屏的游戲。先修改app啟動(dòng)的時(shí)候的默認(rèn)方向,如下圖:
第一步:先把info.plist文件里面的device orientation 全部都不勾選

第二部:在info.plist文件里面,加一個(gè)新的字段:
key值:Initial interface orientation
value值:Landscape (left home button)
如下圖:

app啟動(dòng)默認(rèn)的是一個(gè)橫的方向
第三部:在appdelegate里面從寫下面兩個(gè)方法:
- (BOOL)shouldAutorotate {
? ? return YES;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
? ? return UIInterfaceOrientationMaskAll;
}

這兩個(gè)方法,重寫系統(tǒng)的,可以通過代碼來手動(dòng)控制設(shè)備的方向
第四部:在對(duì)應(yīng)的想要修改為豎屏的vc里面重新跳轉(zhuǎn)設(shè)備的方向?yàn)樨Q屏
- (BOOL)shouldAutorotate {
? ? return YES;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
? ? return UIInterfaceOrientationMaskPortrait;
}
同樣重寫了,和appdelegate里面一樣的控制設(shè)備方向的方法。
PS:重寫系統(tǒng)控制設(shè)備方向的方法,第一個(gè)先在appdelegate里面寫,這樣子,就可以通過代碼來接管系統(tǒng)里面的控制設(shè)備的方向的操作。第二個(gè)在想要改變?cè)O(shè)備方向的vc里面來調(diào)轉(zhuǎn)具體的設(shè)備方向。
注意:如果device orientation里面沒有UIInterfaceOrientationMaskPortrait,并且,device orientation的勾都沒有去掉(也就是有其他的設(shè)備方向存在),這個(gè)時(shí)候要是把設(shè)備方向修改為沒有的UIInterfaceOrientationMaskPortrait,app會(huì)閃退的。