• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

关于在用Swift开发iOS时如何隐藏NavigationBar和TabBar

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

举个例子:如果我有一个页面需要进入时同时隐藏NavigationBar和TabBar,那么我就在那个页面的ViewController的代码里加上下面的代码。就可以实现了。接下来告诉大家每一块要注意的地方。

1、假如只要隐藏NavigationBar的话就不要setTabBarVisible这一句就好

override func viewWillAppear(animated: Bool) {
    setTabBarVisible(!tabBarIsVisible(), animated: true)
    setNavBarVisible(!navBarIsVisible(), animated: true)
}

2、这些都直接复制过去就好了

func setTabBarVisible(visible:Bool, animated:Bool) {
    if (tabBarIsVisible() == visible) { return }
    let frame = self.tabBarController?.tabBar.frame
    let offsetY = (visible ? CGFloat(0) : 49.0)

     这里要注意,这里是偏移量,修改这里的时候一定要按需求来,首先假设我们的 setTabBarVisible(!tabBarIsVisible(), animated: true)函数是放在ViewWillAppear函数里(就像本例)。也就是说这个函数发生在这个界面将要加载时发生的,那么你看看自己的需要,你需要 这个页面是(假如当时没TabBar就显示TabBar,假如有TabBar那就有,也不隐藏)的话,那么这里设定的值就应该是(visible ? -49.0 : CGFloat(0))
     其实简单地说这句话的意思是TabBar的上移下移 = (TabBar在?(不在就做这个):(在就做这个))
    所以说冒号前后两个就是分别填 -49.0(上移)、 49.0(下移)、 和CGFloat(0)(不做移动) 这3个中的两个,这就代表着这个函数到底做了什么

    let duration:NSTimeInterval = (animated ? 0.3 : 0.0)

    应该都很好懂吧0.3就是隐藏时的持续时间

    if frame != nil {
        UIView.animateWithDuration(duration) {
        self.tabBarController?.tabBar.frame = CGRectOffset(frame!, 0, offsetY!)
        return
        }
    }
}

    func tabBarIsVisible() ->Bool {
    return self.tabBarController?.tabBar.frame.origin.y < CGRectGetMaxY(self.view.frame)
}
func setNavBarVisible(visible:Bool, animated:Bool) {
    if (navBarIsVisible() == visible) { return }
    let frame = self.navigationController?.navigationBar.frame
    let offsetY = (visible ? CGFloat(0) : -64.0)

    这里的偏移也和TabBar的一样,大家参照着看看就好了。

    let duration:NSTimeInterval = (animated ? 0.3 : 0.0)
    if frame != nil {
    UIView.animateWithDuration(duration) {
        self.navigationController?.navigationBar.frame = CGRectOffset(frame!, 0, offsetY)
        return    
    }
}
    func navBarIsVisible() ->Bool {
        return self.navigationController?.navigationBar.frame.origin.y > CGRectGetMinY(UIScreen.mainScreen().bounds)
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[Swift系列]001-入门准备发布时间:2022-07-13
下一篇:
Swift字符串截取与Range使用发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap