最近公司要搞iPad的豎屏版本,使用了PrimaryOverlay的方式顯示左側(cè)的菜單欄,在實際開發(fā)過程中很是遇到了一些問題,這里就記錄一下吧:
- 設(shè)備方向不等于實際方向
- 部分豎屏頁面無法旋轉(zhuǎn)到橫屏
- Popover出現(xiàn)覆蓋問題
關(guān)于這幾個問題,其實也并沒有特別的麻煩,只是一時間會想不到解決思路而已。
設(shè)備方向問題
設(shè)備方向不能夠直接讀取[UIDevice currentDevice]的方向,因為device的方向還存在FaceUp和FaceDown,如果只使用[UIDevice currentDevice]來獲取的話,會出現(xiàn)識別錯誤的情況。所以正確的做法應(yīng)該是先使用[UIDevice currentDevice]獲取,如果是FaceUp或者FaceDown,在使用statusBar的方向來進(jìn)行識別,最終獲取正確的方向。
部分頁面無法旋轉(zhuǎn)的問題
這個主要是有一部分頁面是從primaryController彈出的頁面,這些頁面在轉(zhuǎn)屏?xí)r就會無法旋轉(zhuǎn)。正確的做法是使用category或者共有父類,重寫present方法,判斷如果是splitController的primaryController在彈出頁面,修改為使用splitController彈出。
Popover的覆蓋問題
由于PrimaryOverlay模式下,菜單頁面的出現(xiàn)也是一個popover,如果不進(jìn)行處理的話,就會導(dǎo)致菜單頁面覆蓋了原頁面的popover。這個問題沒有找到更好的辦法,我也只是在屏幕旋轉(zhuǎn)的時候,把當(dāng)前頁面彈出的popover消失,這樣就可以避免出現(xiàn)覆蓋的問題。當(dāng)然,還有一個辦法,就是在屏幕旋轉(zhuǎn)的時候,如果判斷有popover,把模式設(shè)置為PrimaryHidden也是可以的。
主要的問題也就這么三個吧,簡單的說明和記錄一下。