关于在用Swift开发iOS时如何隐藏NavigationBar和TabBar
举个例子:如果我有一个页面需要进入时同时隐藏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)
}
关于在用Swift开发iOS时如何隐藏NavigationBar和TabBar的更多相关文章
- Swift开发iOS应用过程中的问题和解决记录
虚拟机里安装OSX+XCode开发环境 用真机的请直接跳过这个部分. 主要是在VitrualBox里安装mac系统和xcode,参考这篇教程,VirtualBox的版本是4.3.18 r96156,O ...
- Swift开发iOS项目实战视频教程(一)---iOS真简单
本课主要介绍iOS项目的创建.第一个iOS项目的开发.UILabel.UIButton的使用. 假设你看完此视频还认为iOS非常难,请你来找我! 本教程摒弃枯燥的语法和知识解说,全是有趣有料的项目实战 ...
- Swift开发iOS项目实战视频教程(二)---图片与动画
本课主要介绍UIImageview.NSTimer的使用.并介绍了一种动画实现方式. 本教程摒弃枯燥的语法和知识解说.全是有趣有料的项目实战! 视频优酷链接:v.youku.com/v_show/id ...
- 使用Swift开发iOS项目、UI创建、方法调用
//1.root控制器的创建 var rootCtrl =RootViewController() var root:UINavigationController =UIN ...
- Unity3D 开发ios时困扰多时游戏开始画面图片的分辨率
- 通过navigationController跳转界面时隐藏navigationBar上的元素
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- Cordova - 与iOS原生代码交互2(使用Swift开发Cordova的自定义插件)
在前一篇文章中我介绍了如何通过 js 与原生代码进行交互(Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)),当时是直接对Cordova生成的iOS工程项目进行编辑操作的(添加 ...
- 【Swift】iOS开发历险记(二)
前言 这个系列主要是一些开发中遇到的坑记录分享,有助于初学者跨过这些坑,攒够 7 条发一篇. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯 ...
- iOS开发笔记-swift实现iOS数据持久化之归档NSKeyedArchiver
IOS数据持久化的方式分为三种: 属性列表 (plist.NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等 归档(又名 ...
随机推荐
- haproxy image跳转 haproxy匹配 匹配到了就停止,不会继续往下匹配
<pre name="code" class="html">/***第一种 nginx 配置: location / { root /var/www ...
- AIX安装SSH
AIX 7.1 进入 https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=aixbp 先下载需要的openssl,op ...
- 数据结构--队列之C数组实现
队列是一种限定操作的线性表,它只能在表的一段插入,另外一段取出.所以也称为先进先出数据结构(FIFO---First In First Out) C代码如下: #include<stdio.h& ...
- UVA 562 Dividing coins(dp + 01背包)
Dividing coins It's commonly known that the Dutch have invented copper-wire. Two Dutch men were figh ...
- 如何使用TestFlight进行App构建版本测试(转)
在日常的开发当中,当一个项目在开发过程中或者完成准备上线,都需要我们进行真机测试,否则不可能开发完了就直接扔到了App,等上线了再下载看看,这都是不可能的.那么说到真机测试,大家肯定会想到弄一个99美 ...
- jQuery中设置form表单中action值的方法
jQuery中设置form表单中action值的方法 (2011-03-17 10:18:19) 转载▼ 标签: 杂谈 html代码: <form id="myFormId&quo ...
- oracle参数文件spfile和pfile
一.参数文件说明 PFILE(Initialiazation Parameter Files)初始化参数文件,是文本文件,可直使用文本编辑器查看.如果数据库使用的是初始化参数文件PFILE,要想永久修 ...
- 【数学水题】【TOJ4113】【 Determine X】
题目大意: yuebai has a long sequence of integers A1,A2,-,AN. He also has such a function: F(x)=∑i=1N(⌊Ai ...
- Android自定义工具类获取按钮并绑定事件(利用暴力反射和注解)
Android中为按钮绑定事件的有几种常见方式,你可以在布局文件中为按钮设置id,然后在MainActivity中通过findViewById方法获取按钮对象实例,再通过setOnClickListe ...
- JSON对象和字符串的互相转换
1.JSON.parse; 作用:将JavaScript对象表示法的JSON字符串转换为对象(字符串转对象) 语法:JSON.parse(text [, reviver]) text 必选. 一 ...