iOS10 的適配問題,你遇到了嗎?導航欄標題和返回按鈕神奇的消失了


蘋果系統升級后好多應用都發了新版本來適配,今天就來分享一下我的適配歷程。

首先是出現的問題:

  1.push一個控制器,返回按鈕和標題神奇的消失了,打開三維視圖(比較坑的是有的版本老到打不開三維視圖 ),發現返回按鈕和標題並沒有消失,而是被一層視圖擋到了。

  2.有文本輸入的地方,在iOS10中文本框也消失了,導致無法輸入內容。

  3.權限問題。

其次是解決思路:

  1.頂層被莫名其妙的加了一層視圖,感覺是自定義的導航欄的背景視圖的層次出問題了,所以查看了自定義的導航欄,但是並沒有,后來問了問,有一個應急的解決辦法,就是給導航欄設置背景色,顏色取背景圖片的顏色,在每一個用到該導航欄的試圖控制器的viewWillAppear方法中重新設置一下導航欄,在viewWillDisappear里也重新設置一下。

  但是上面的方法僅適用於導航欄顏色為純色,,所以為了更靈活,還有另一種方法,就是在viewWillAppear和viewWillDisappear方法里先將視圖控制器的導航欄隱藏然后再顯示

  

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:NO];
    [self.navigationController setNavigationBarHidden:NO animated:NO];
}

-(void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:NO];
    [self.navigationController setNavigationBarHidden:NO animated:NO];
}

  

  第一次看到上面的代碼時,我也跟你一樣感到詫異,可是神奇的是它確實奏效了。

  為什么呢?簡書的一位作者寫過類似的博客,里面提到的原因是“iOS10在加載導航欄是總會加載系統的”。如果他說得對的話,也就是說push時系統會將自帶的導航欄置頂,而隱藏后再顯示只會顯示自定義的導航欄。

  可是問題又來了,如果每一個視圖控制器都加了上面的代碼也是有問題的,問題是如果某視圖控制器不需要繼續push,那么該視圖控制器會不能很好地適配iOS10,有時會返回到修改前的狀態。解決方法是在進入該視圖時判斷是否需要跳轉,如果需要繼續跳轉,則加上上面的代碼,否則屏蔽掉。

  2.此處現在已知的方法是重新建立xib文件。

  3.iOS10 中某些權限是必須要加的

(參考:http://blog.csdn.net/wang631106979/article/details/52578001),

例如程序要拍照:Privacy - Camera Usage Description,

    麥克風:Privacy - Microphone Usage Description,

    定   位:Privacy - Location When In Use Usage Description,

    日   歷:Privacy - Calendars Usage Description

 

 

 

******

后面的內容與標題無關 推廣下個人開發的APP 覺得還不錯的 自己自己偷偷用就行了

密碼口袋

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM