iOS11以后毁腿,自定義tabBar會(huì)出現(xiàn)重影問題辑奈,之前的兩種方法都無(wú)法解決:
//之前解決重影問題的方法一:重寫導(dǎo)航控制器的方法進(jìn)行攔截
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
for (UIView *tabBar in self.tabBarController.tabBar.subviews) {// 刪除系統(tǒng)自帶的tabBarButton
if (![tabBar isKindOfClass:[BYMainTabBarView class]]) {
[tabBar removeFromSuperview];
}
}
}
//之前解決重影問題的方法二:在自定義的tabBar控制器中刪除
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
//刪除非自定義的tabBar(即刪除系統(tǒng)的UITabBarButton)
for (UIView *child in self.tabBar.subviews) {
if (![child isKindOfClass:[BYMainTabBarView class]]) {
[child removeFromSuperview];
}
}
}
//這兩種方法,只能保證tabBar欄的幾個(gè)控制器之間跳轉(zhuǎn)不會(huì)重影已烤;一旦點(diǎn)擊了其他二級(jí)控制器鸠窗,回到tabBar時(shí)就會(huì)出現(xiàn)重影的問題
最新的解決方式為:將上面兩種方法都舍棄掉,在自定義的tabBar控制器中添加以下代碼:
- (void)viewWillLayoutSubviews{//每次layout時(shí)都刪除一次
[super viewWillLayoutSubviews];
//刪除非自定義的tabBar(即刪除系統(tǒng)的UITabBarButton)
for (UIView * view in self.tabBar.subviews){
if (![view isKindOfClass:[BYMainTabBarView class]]) {
[view removeFromSuperview];
}
}
}