ios tabbar 出现了重影问题

正常情况是这样的
clipboard.png
当从子页面返回主页的时候,就发现tabbar那里的按钮都出现了重影,除了中间的扫描二维码按钮

clipboard.png
有人知道这是什么原因吗?
前人的代码,用的是自定义的tabbarcontroller和自定义tabbar。

在我手机iphone x 上出的问题

更新
现在发现,在返回的时候,调用了两次自定义tabbar的layoutSubviews。

- (void)layoutSubviews{
    [super layoutSubviews];
    self.writeButton.center = CGPointMake(self.frame.size.width*0.5, self.frame.size.height*0.5);
    
    CGFloat btnY = 0;
    CGFloat btnW = self.frame.size.width/(self.subviews.count);
    CGFloat btnH = self.frame.size.height;
    
    for (int nIndex = 0; nIndex < self.tabbarBtnArray.count; nIndex++) {
        CGFloat btnX = btnW * nIndex;
        MainTabBarButton *tabBarBtn = self.tabbarBtnArray[nIndex];
        if (nIndex > 1) {
            btnX += btnW;
        }
        tabBarBtn.frame = CGRectMake(btnX, btnY, btnW, btnH);
        
    
        tabBarBtn.tag = nIndex;
    }
}

不知道为什么会调用两次
而且感觉tabbar的高度变高了。。。

阅读 2.9k
3 个回答

这不是重影了, 这是系统默认的tabbar又出现了。

自定义的tabBarController/tabbar,是不是继承了系统的tabbarController/tabbar?应该是返回后,设定将已经隐藏的tabbar显示出来。
你是不是对这个显示的操作,也同时给了系统默认的tabbar?查下代码,看看是不是改错了什么地方。

调试的时候看看Xcode的debug view,是系统多余的还是自己添加的就一目了然了

新手上路,请多包涵

可以对系统的TabBar做一下处理试试

for (UIView *view in self.tabBar.subviews) {
    if (![view isKindOfClass:[TabBar class]]) {
        [view removeFromSuperview];
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题