关于在用Swift开发iOS时如何隐藏NavigationBar和TabBar
2015-11-30 14:37
531 查看
举个例子:如果我有一个页面需要进入时同时隐藏NavigationBar和TabBar,那么我就在那个页面的ViewController的代码里加上下面的代码。就可以实现了。接下来告诉大家每一块要注意的地方。
1、假如只要隐藏NavigationBar的话就不要setTabBarVisible这一句就好
2、这些都直接复制过去就好了
这里要注意,这里是偏移量,修改这里的时候一定要按需求来,首先假设我们的 setTabBarVisible(!tabBarIsVisible(), animated: true)函数是放在ViewWillAppear函数里(就像本例)。也就是说这个函数发生在这个界面将要加载时发生的,那么你看看自己的需要,你需要 这个页面是(假如当时没TabBar就显示TabBar,假如有TabBar那就有,也不隐藏)的话,那么这里设定的值就应该是(visible ? -49.0 : CGFloat(0))
其实简单地说这句话的意思是TabBar的上移下移 = (TabBar在?(不在就做这个):(在就做这个))
所以说冒号前后两个就是分别填 -49.0(上移)、 49.0(下移)、 和CGFloat(0)(不做移动) 这3个中的两个,这就代表着这个函数到底做了什么
应该都很好懂吧0.3就是隐藏时的持续时间
这里的偏移也和TabBar的一样,大家参照着看看就好了。
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)
}
相关文章推荐
- (九)Swift StatusBar 状态栏
- (八)swift 中UINavigationController 中的一些操作
- Swift UIview的 层次交换 和部分动画的详解
- iOS Swift语言构造器注意点
- swift 基础(二)闭包、对象和类、setter&getter
- Swift 类构造器的使用
- Swift与OC 混编
- 《从零开始学Swift》学习笔记(Day 42)——构造函数调用规则
- 《从零开始学Swift》学习笔记(Day 42)——构造函数调用规则
- 4、Swift中UIButton的使用
- Swift 设置navigation左右两侧按钮
- swift 变量、元组、运算符
- swift按钮通过代码添加点击事件时出现unrecognized selector sent to instance 0x136ea5010错误
- Swift下弹出对话框
- Swift UIView 的多种添加方法和打标签和移除(方法的详解)、父子视图的关系
- Alamofire,SwiftJSON,MJExtension,解析Json获取对象,带参数上传图片
- Swift 代码调试-善用XCode工具(UI调试,五种断点,预览UIImage...)
- Swift 面向对象
- Swift 语言函数
- Swiftype添加站内搜索