完美結局iPhoneX自定義tabBar重影問題

對于iOS開發(fā)者來說,底部的tabBar通常都是需要自定義,因為系統(tǒng)自帶的或多或少和我們要求的總有一點的出入。

在自定義tabBar后,通常做法就是移除系統(tǒng)的tabBar來防止出現(xiàn)重影的問題。

在iPhoneX之前我們通常都是在導航中使用這樣的方法來移除系統(tǒng)的tabBar的

iPhoneX之前移除系統(tǒng)的tabBar方法或者

視圖即將出現(xiàn)時進行刪除

效果呢如何,自然是不用多少。因為這是在iPhoneX之前最常用的消除系統(tǒng)系統(tǒng)tabBar的方法。

但是!在iPhoneX之后,我們在適配的時候,如果還是加上這段代碼的話,在進入初始界面的時候,并沒有發(fā)現(xiàn)什么問題。如圖:

初始進入視圖的時候

我們根據(jù)視圖會發(fā)現(xiàn)并沒有什么問題,如果點擊按鈕什么的進入下一級界面后,再次返回界面就會出現(xiàn)重影問題。如圖:

在進入二級界面后再次返回后的視圖

這時候問題出現(xiàn)了。我們明明在導航中刪除了,為什么會在二級界面返回的時候仍會出現(xiàn)這樣的問題?是這段代碼沒有起作用嗎?顯然不是的,因為我們在初次進入視圖的時候,是沒有出現(xiàn)重影的,但是在返回的時候,出現(xiàn)了重影。

解決方法:

第一種:直接在系統(tǒng)的tabBar中進行更改,這種方法是一個朋友介紹的,目前還沒有嘗試過,但是能用。

第二種:在自定義的TabBarController中。添加刪除系統(tǒng)tabBar的代碼。具體如下:

刪除系統(tǒng)的tabBar

這樣就完美解決了iOS 11,在返回時候tabb出現(xiàn)重影的問題。

原理:在iOS 11中,系統(tǒng)的控件(似乎是)只能隱藏,不能刪除,再返回的時候,系統(tǒng)會自動判斷,添加已刪除的系統(tǒng)控件。(具體的真實性有待研究)。

這兩者的代碼區(qū)別是,前者我們只刪除一次,后者是在前者基礎上再刪除一次,以防出現(xiàn)的時候不能刪除,在viewWillAppear中刪除只是保證刪除一次。所以要進行多次刪除。

這樣多次刪除會不會把本來不存在的刪除會出現(xiàn)空指針訪問錯誤?

不會的。因為我們是遍歷他的子控件,發(fā)現(xiàn)有才去刪除,所以并不會刪除不存在的東西。

至此,重影問題完美解決。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 注: 本文轉自http://blog.csdn.net/bug_delete/article/details/78...
    QQWeb1234qwe閱讀 691評論 0 1
  • 李敖先生走了,可是真正記得他的又有多少人呢 有多少心碎的時刻,去紀念一位偉人
    游橙子閱讀 297評論 0 0
  • 上周四課程中老師讓我們畫了各種面具,呵呵,似乎撕面具的時刻到來了,撕吧,徹底的撕掉那些虛偽的自我,討好的自我。不想...
    愛若嘉閱讀 697評論 0 1
  • 12月31日,又是一年最后一天。地球公轉了一圈又回到起點,可是在這一年經歷過的人和事卻不會再來一遍,這一天人們總需...
    tyhunter閱讀 661評論 0 0
  • 我記得在2017年6月中旬,老師發(fā)給了我們一人一套史記,說實話當我第一眼看到它時真的是心生厭惡,文言文,雖然說...
    cy諾ooo閱讀 550評論 0 3

友情鏈接更多精彩內容