美文网首页
iOS 12.1上,从其它页面返回时,UITabBar按钮的跳动

iOS 12.1上,从其它页面返回时,UITabBar按钮的跳动

作者: yzyanchao | 来源:发表于2018-11-12 23:03 被阅读0次

    这是iOS 12.1的一个bug,症状见下图:


    image

    默认的UITabBar的isTranslucent(磨砂)为true,并且push viewController 时 设置hidesBottomBarWhenPushed = true,就会出现此问题。

    将磨砂属性设置为false即可解决此问题:

    tabBar.isTranslucent = false
    

    但同时要注意,这样做之后,tabBar上面的这个tableView的底部依赖要做修正,不需要再减去tabBar的height了。比如,现在要这么写:

    // 这里用了SnapKit库
    tableView.snp.makeConstraints { (constraintMaker) in
        if #available(iOS 12.1, *) {
            // iOS 12.1, tabBar的isTranslucent设为false
            constraintMaker.bottom.equalToSuperview()
        } else {
            // iOS 12.1之前的版本,tabBar的isTranslucent仍设为true,所以要减去tabBarHeight
            constraintMaker.bottom.equalToSuperview().offset(0 - tabBarHeight)
        }
    }
    

    究其原因,可以查看参考链接2。原因是从其它页面返回时,tabBar 内的按钮 UITabBarButton 被设置了错误的 frame,frame.size 变为 (0, 0) 导致的。

    参考:

    1. https://stackoverflow.com/questions/53084806/uitabbar-items-jumping-on-back-navigation-on-ios-12-1/
    2. https://github.com/ChenYilong/CYLTabBarController/commit/2c741c8bffd47763ad2fca198202946a2a63c4fc

    相关文章

      网友评论

          本文标题:iOS 12.1上,从其它页面返回时,UITabBar按钮的跳动

          本文链接:https://www.haomeiwen.com/subject/lsphfqtx.html