加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift 如何移除下面的tabbar

发布时间:2020-12-14 06:44:05 所属栏目:百科 来源:网络整理
导读:在使用push方式进行跳转的时候,tabbar跟着显示。有时候不需要它了,应该如何去掉内呢 网上有很多种解决方案,原理大致相同(但是大部分方案只是做到了隐藏,隐藏后下面还是会有空白占据一定的空间,这里只是把网上的几种方式总结了一下) 比如下面这两种 方

在使用push方式进行跳转的时候,tabbar跟着显示。有时候不需要它了,应该如何去掉内呢

网上有很多种解决方案,原理大致相同(但是大部分方案只是做到了隐藏,隐藏后下面还是会有空白占据一定的空间,这里只是把网上的几种方式总结了一下)

比如下面这两种

方式1.

在需要隐藏tabbar的界面的ViewController中的viewWillAppear方法中添加两行代码 (我在测试的时候貌似只写第二句就行了)

self.tabBarController?.hidesBottomBarWhenPushed = true;

self.tabBarController?.tabBar.hidden = true;

方式2.

控制器有个hidesBottomBarWhenPushed属性。官方的定义是:// If YES,then when this view controller is pushed into a controller hierarchy with a bottom bar (like a tab bar),the bottom bar will slide out. Default is NO. 即,当控制器被push进一个控制器之后,底部条(比如tabBar)会滑出。默认为NO。

现在假设一种情况,tabBarController上放着四个导航控制器,那么要想实现push进一个新的控制器的时候,将tabBarController的tabBar隐藏,只要设置hidesBottomBarWhenPushed = YES;那如果想要隐藏呢?有的人可能会这么做:在viewWillApper里面加入下面的代码:

if (self.navigationController?.viewControllers.count == 1) {

self.tabBarController.tabBar.hidden = false;

}

这样做,在第一遍返回到tabBarController上时,是没问题的。但是当第二次再push进入一个新的控制器时,你会发现,hidesBottomBarWhenPushed根本没生效,怎么解决呢?

将viewWillAppear里面的代码更换成:

if (self.navigationController?.viewControllers.count > 1) {

self.tabBarController?.tabBar.hidden = true;

}else {

self.tabBarController?.tabBar.hidden = false;

}

这时就完美的解决了问题。

这个时候,也有人可能会问:是不是只要在viewWillAppear里面加入那些代码就可以,不用设置hidesBottomBarWhenPushed属性为YES。那么你只要试一下,你就会知道。。


方式3.

 func setTabBarVisible(visible:Bool,animated:Bool) {
          if (tabBarIsVisible() == visible) { return }
        
        let frame = self.tabBarController?.tabBar.frame
        let offsetY:CGFloat = (visible ? 49.0 : 49.0)
        
        let duration:NSTimeInterval = (animated ? 0.3 : 0.0)
        if frame != nil {
            UIView.animateWithDuration(duration) {
                self.tabBarController?.tabBar.frame = CGRectOffset(frame!,offsetY)
                return
            }
        }
    }
    
    func tabBarIsVisible() ->Bool {
        return self.tabBarController?.tabBar.frame.origin.y < CGRectGetMaxY(self.view.frame)
    }

然后调用

setTabBarVisible(true,animated: false)

参考:

http://www.it165.net/pro/html/201503/37047.html

http://www.jianshu.com/p/56c8b3c1403c

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读