举个例子:如果我有一个页面需要进入时同时隐藏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相关推荐

  1. 1、swift开发iOS——基础

    swift开发iphone app SWIFT Swift 是一种支持多编程范式和编译式的开源编程语言,苹果于2014年WWDC(苹果开发者大会)发布,用于开发 iOS,OS X 和 watchOS ...

  2. [Error]Swift开发调试时使用LLDB的po和print命令无法输出变量

    问题: 用Swift开发时,使用LLDB的po和print命令在控制台输出变量报错. let a = 1(lldb) po a (lldb) print a 错误信息 error: expressio ...

  3. Swift开发iOS项目实战视频教程(一)---iOS真简单

    本课主要介绍iOS项目的创建.第一个iOS项目的开发.UILabel.UIButton的使用. 假设你看完此视频还认为iOS非常难,请你来找我! 本教程摒弃枯燥的语法和知识解说,全是有趣有料的项目实战 ...

  4. Swift开发IOS-UISlider

    UISlider为IOS中的滑块控件,系统提供的UISlider如下: UISlider的创建以及常用属性如下: 为UISlider添加滑动监听事件: [注意] 需要注意的是UIControlEven ...

  5. iOS开发--iOS应用架构谈 view层的组织和调用方案

    前言 <iOS应用架构谈 开篇>出来之后,很多人来催我赶紧出第二篇.这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分. 现在好啦,第二 ...

  6. 《Swift开发实战》——第1章,第1.4节启动iOS 8模拟器

    本节书摘来自异步社区<Swift开发实战>一书中的第1章,第1.4节启动iOS 8模拟器,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.4 启动i ...

  7. IOS swift开发——获取设备定位信息

    作为GIS开发人员,学习任何Android或者swift开发语言,可能第一时间想到的就是获取设备的定位信息.这里就来简述一下,我使用swift获取IOS定位信息的过程. 目录 添加后台定位能力 模拟器 ...

  8. xcode13 swift语言 ios开发 快捷代码优化方式(代码重构)例子

    xcode13 swift语言 ios开发 快捷代码优化方式(代码重构)例子 这是自己在CSDN上发的第二篇文章,开始用markdown编辑,更加美观一些. 问题描述 在用xcode swift语言开 ...

  9. Vue移动端开发IOS浏览器回退时页面不刷新或未正常发起请求

    移动端微信公众号项目进行UAT测试时遇到一个问题,ios微信浏览器访问项目时回退上一级页面异常,未刷新.网上看的是由于ios回退是从缓存中读取数据的,由于开发环境不方便测试,找到如下解决方法 经测试是 ...

  10. 解决uniapp开发H5时ios无法长按保存图片

    在uniapp开发H5时如果遇到生成海报并需要实现长按保存该图片海报如果使用如下代码,在ios手机中无法实现长按保存 <image :src="ewm" @longtap=& ...

最新文章

  1. 用于时序动作提名生成任务,爱奇艺提出BC-GNN图神经网络 | ECCV 2020
  2. 引导直觉解决数学猜想难题,DeepMind登上《Nature》封面
  3. java 手机号码归属地_【原创】Java实现手机号码归属地查询
  4. rbac 权限分配, 基于formset实现,批量增加
  5. 《转》在c/s中,登录成功后如何关闭登录窗体显示主窗体
  6. 【产量预测】基于matlab BP和GRNN神经网络预测粮食产量【含Matlab源码 1247期】
  7. Java使用lowagie根据模版动态生成PDF(无需额外设置系统字体)
  8. Centos 7 WPS简单安装方法
  9. 鸿蒙归蝶的反弹,诛仙鸿蒙副本怎么过
  10. venue11 Android,ebay购入dell 戴尔 venue11 pro 平板电脑
  11. Qt中根据pc屏幕分辨率按比例修改窗口的大小
  12. 服务器如何选择备案产品类型?
  13. plt.scatter(X[0, :], X[1, :], c=Y, s=40, cmap=plt.cm.Spectral)出错
  14. 【转载】 有道笔记-打卡50件事
  15. python网球比赛模拟主持稿_主持人大赛的模拟主持稿件模板推荐
  16. 2021.9.9 自适应巡航的车辆动力学系统建模与仿真 ———— 朱茂琳,裴晓飞 ( 武汉理工大学 汽车工程学院)
  17. Js 正则表达式中g的用法
  18. 12.头等舱 60
  19. halcon18算子:最小包围矩形smallest_rectangle2()
  20. Python游戏开发-03-用font对象把日志显示到屏幕上

热门文章

  1. 华农c语言期末试卷答案,华南农业大学2013学年第1学期程序设计(C语言)期末考试试卷(A卷)...
  2. Java关流对流对象有什么影响_Java面试题全集(1.4)
  3. 【Azure Services Platform Step by Step-第7篇】别把Windows Azure当虚拟主机使——理解Windows Azure服务架构...
  4. 【转载】张逸--ThoughtWorks(中国)程序员读书雷达
  5. MySQL binlog_format (Mixed,Statement,Row)
  6. 采用python的pyquery引擎做网页爬虫,进行数据分析
  7. ssh公钥的生成、查看以及config的配置
  8. 概率论与数理统计 习题篇
  9. c语言内存四区,详解C语言中的内存四区模型及结构体对内存的使用
  10. matlab输入一个正的实数x,VB程序题:用InputBox 输入一个正实数,用Pring方法在一行上显示出它的平方和平方根、立方和立方根,每个数保留三位小数,其间有间隔。...