轉 iOS11 自定義tabbar圖標出現重影問題

注: ?本文轉自http://blog.csdn.net/bug_delete/article/details/78203996 僅供學習參考使用

大家在自定義tabbar的時候會將系統的tabbar干掉,然后放上自已自定義的tabbar(含有想要的Button)對不對,具體代碼如下:

/**

*? 添加自定義的tabBar*/-(void)addTabBarView

{

MSTabBar* tabbar =[[MSTabBar alloc]init];

tabbar.backgroundColor=[UIColor whiteColor];

tabbar.frame=self.tabBar.bounds;

tabbar.delegate=self;

tabbar.tabBarItems=self.tabBarItems;

[self.tabBar addSubview:tabbar];

}/**

*? 在主要控制器出來時將系統的tabbar移除掉只剩下自已的*/-(void)viewWillAppear:(BOOL)animated{

[super viewWillAppear:animated];//將tabbar里面的東西除了自定義的tabbar不刪除,其他都刪除//留下一個自定義的.想隱藏就能隱藏掉,只要設置tabbar的一個隱藏屬性就好,for(UIView * viewinself.tabBar.subviews)

{if(![view isKindOfClass:[MSTabBarclass]]) {

[view removeFromSuperview];

}

}

}

然后完美使用自已自定義的,就可以隨心所欲在view上做事情,或者做一些想要的動畫

但是

最近項目出現tabbar重影問題,我明明將系統的tabbar干掉了,但是還是感覺會出來,在我使用以下代碼進行頁面間的跳轉的時候,重影問題出現了.

重影圖片居然長那么丑,就是系統的藍色加上自已的色彩,完全懵逼了有木有!!!

我設置的顏色是00d4d3 而重疊上系統的藍色

拿層級工具查看

有沒有覺得跟蛋疼,,,疼疼疼....

這讓我很尷尬啊,為什么去掉了系統的tabbar又出現了

細心點會發現只是進行跨級跳躍的時候會出現該bug,只是我是這樣出現的,不知道還有其他同學會怎么奇葩地出現改bug

嚴肅來說如果只是單個跳轉并沒有出現重影,而進行跨級跳躍的時候會出現tabbar圖標重影問題.

以下代碼為跨級跳轉

//發通知for(UIViewController *controllerinself.navigationController.viewControllers) {if([controller isKindOfClass:[MSDetailWebControllerclass]]) {

[self.navigationController popToViewController:controller animated:NO];

}

}

在百度尋找了一堆答案,試了無限次遍,終于在一個方法里面實現幾行代碼就解決了,重影問題沒有再出現過

請同學們仔細觀察以下~~!!!--------跨級跳轉的時候會發現什么~!!

具體原理不貼了,畢竟我們是解決問題的嘛~~(其實我也不知道發現啥,反正系統的tabbar會再出現一次)

解決辦法:

-(void)viewWillLayoutSubviews

{

[super viewWillLayoutSubviews];for(UIView * viewinself.tabBar.subviews)

{if(![view isKindOfClass:[MSTabBarclass]]) {

[view removeFromSuperview];

}

}

}

在主要的視圖layoutSubView中再刪除一次,以防出現的時候不能刪除,在viewWillAppear中刪除只是保證刪除一次

所以要進行多次刪除

有同學會發現這樣刪除會不會把本來不存在的刪除會出現空指針訪問錯誤

這樣是不會出現這種問題的,因為是遍歷他的子控件,發現有才刪除,所以并不會刪除不存在的東西

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容