我們在使用模態(tài)視圖的時候,如果需要再接下來的頁面可以進行橫豎屏切換,就必須注意一個大坑,我查遍了網(wǎng)絡(luò),各種方法用盡了,終于找到了解決方案。
需求:
當前頁面必須橫屏顯示,不能豎屏顯示,模態(tài)視圖彈出頁面可以進行橫豎屏切換。同時,該項目同時使用導(dǎo)航欄和工具欄。
解決方案:
關(guān)于橫豎屏切換這方面,網(wǎng)上相關(guān)的解決方案很多,在這里不加以描述,我主要想說的是,網(wǎng)上的那些解決方案不一定能解決你項目中遇到的問題。他們更多的是一個測試Demo,在具體項目中,并不能生效。話不多說,直接上代碼。
- (BOOL)shouldAutorotate {
return NO;
}
//支持的方向 因為界面A我們只需要支持豎屏
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
網(wǎng)上出現(xiàn)最多的代碼就是這個,在只需要豎屏的頁面代碼中填入。但是呢,你可以試試,這樣做有時候并不生效。這個坑就在你同時使用了導(dǎo)航欄和工具欄,所以這就需要你同時在這兩個類中加入這兩個方法。
但這時候又出現(xiàn)了問題:如果你用的系統(tǒng)默認的導(dǎo)航欄和默認的工具欄,以及幾個頁面都是單獨的controller,這個時候你就需要使用到了繼承的概念了,子類化Navigation和TabBar,在子類中重寫這兩個方法就ok了。同時如果你的幾個主Controller都是單獨存在的,這樣你就必須在每個類里寫一遍這兩個方法,有點low,所以這里仍然是使用繼承的概念,將幾個controller全部繼承此類,在此類中實現(xiàn)這兩個方法。