UINavigationController及顶部导航条
- UINavigationController管理一个VC的栈,栈底的VC叫做这个UINavigationController的root view controller.
- 有一个函数叫做
popToRootViewController(animated:)
,就是返回rootVC。 UINavigationController在顶部有一个
navigationBar
,继承自UIView。它的frame,bound及alpha值都不能改变。隐藏或者显示这个navigationBar
要调用UINavigationController的setNavigationBarHidden(_:animated:)
方法。其中动画的时间是一个常量UINavigationControllerHideShowBarDuration
,不能改变。To show or hide the navigation bar, you should always do so through the navigation controller by changing its isNavigationBarHidden property or calling the setNavigationBarHidden(_:animated:) method.
self.navigationController?.setNavigationBarHidden(false, animated: true)
self.navigationController?.navigationBarHiddennavigationBar的各个属性
navigationBar的背景色
self.navigationController?.navigationBar.barTintColor = UIColor.yellowColor()
navigationBar的配置
navigationBar有左、中、右三个部分。显示的具体内容是根据当前VC的UINavigationItem
属性及栈中前一个VC的UINavigationItem
属性配置的。UINavigationItem
UINavigationItem作为VC的属性,在这个VC处于navigation stack时,用来设置定于导航条的样式等等。属性分别用来设置导航条左、中、右的样式等。左边
- leftBarButtonItem 最左边的按钮
- leftBarButtonItems 最左边的按钮们(可以有多个)
- setLeftBarButtonItems(_:animated:)
self.navigationItem.leftBarButtonItem = UIBarButtonItem.init(title: "left", style: .Plain, target: self, action: #selector(TGVCButtom.leftButtonClicked(_:)))
self.navigationItem.leftBarButtonItem?.tintColor = UIColor.brownColor()
let dict = [NSForegroundColorAttributeName : UIColor.blueColor(),
NSKernAttributeName: NSNumber.init(int: 10)
self.navigationItem.leftBarButtonItem?.setTitleTextAttributes(dict, forState: .Normal) let sencondleftBarButtonItem = UIBarButtonItem.init(title: "leftSecond", style: .Plain, target: self, action: #selector(TGVCButtom.secondLeftButtonClicked(_:)))
self.navigationItem.setLeftBarButtonItems([self.navigationItem.leftBarButtonItem!,sencondleftBarButtonItem], animated: true)
中间
title
self.navigationItem.title = "buttomVC"
titleView
会覆盖title。如果需要设置button、富文本可以考虑这个Custom title views are centered on the navigation bar and may be resized to fit
self.navigationItem.titleView = UIImageView.init(image: TGResizeImage(UIImage.init(named: "cat"), byRatio: 0.5) )
- 右边。和左边类似。
- rightBarButtonItem
- rightBarButtonItems
- setRightBarButtonItems(_:animated:)
返回按钮
有时候既要有一个返回的按钮,又要有一个左边的按钮。达到微信的网页常有的返回+关闭的效果。
假设一个当前VC是A,push一个VC出去。
self.navigationController?.pushViewController(self.topVC, animated:true)
那么需要
设置自己的backBarButtonItem
self.navigationItem.backBarButtonItem = UIBarButtonItem.init(title: "back", style: .Plain, target: nil, action: nil);
设置topVC的leftBarButtonItem
self.navigationItem.leftBarButtonItem = UIBarButtonItem.init(title: "leftButton", style: .Done, target: self, action: nil)
设置topVC的两个变量
self.navigationItem.hidesBackButton = false //返回按钮没有被隐藏
self.navigationItem.leftItemsSupplementBackButton = true //返回按钮可以和左边的按钮一起出现
奇怪的prompt
A single line of text displayed at the top of the navigation bar
self.navigationItem.prompt = "promt"//不知道干嘛的。。有啥用呢
如何禁止左滑返回
self.navigationController?.interactivePopGestureRecognizer?.enabled = false
UINavigationController及顶部导航条的更多相关文章
- uni-app自定义导航栏按钮|uniapp仿微信顶部导航条
最近一直在学习uni-app开发,由于uniapp是基于vue.js技术开发的,只要你熟悉vue,基本上很快就能上手了. 在开发中发现uni-app原生导航栏也能实现一些顶部自定义按钮+搜索框,只需在 ...
- HTML实例-02-京东顶部导航条
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- css实现京东顶部导航条
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- Bootstrap 固定在顶部导航条
@{ Layout = null;}<!DOCTYPE html><html><head> <meta name="viewport&q ...
- Bootstrap组件之响应式导航条
响应式导航条:在PC和平板中默认要显示所有的内容:但在手机中导航条中默认只显示“LOGO/Brand”,以及一个“菜单折叠展开按钮”,只有单击折叠按钮后才显示所有的菜单项. 基础class: .nav ...
- Swift - 导航条(UINavigationBar)的使用
与导航控制器(UINavigationController)同时实现导航条和页面切换功能不同. 导航条(UINavgationBar)可以单独使用,添加至任何的UIView中.UINavigation ...
- android开发(1):底部导航条的实现 | navigation tab | activity的创建
底部导航条,在iOS中叫tabbar,在android中叫bottombar或bottom navigation,是一个常用的切换页面的导航条. 同样,如果有良好的第三方库,我们应该优先考虑,能用好别 ...
- 基于jQuery实现页面滚动时顶部导航显示隐藏效果
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...
- UINavigationController导航条是否挡住下面的内容
控制 UINavigationController 导航条是否挡住下面的内容 if ([[[UIDevice currentDevice] systemVersion] floatValue] > ...
随机推荐
- 第五章 大数据平台与技术 第12讲 大数据处理平台Spark
Spark支持多种的编程语言 对比scala和Java编程上节课的计数程序.相比之下,scala简洁明了. Hadoop的IO开销大导致了延迟高,也就是说任务和任务之间涉及到I/O操作.前一个任务完成 ...
- Win10 提升系统响应速度
转载百度经验: https://jingyan.baidu.com/article/54b6b9c0e9d61e2d583b4719.html 1.鼠标左键点击开始按钮,然后点击菜单中的设置,进入设置 ...
- 226. Invert Binary Tree 翻转二叉树
[抄题]: Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 [暴力解法]: 时间分析: 空间分 ...
- sql优化 原因
不使用子查询例: SELECT * FROM t1 WHERE id (SELECT id FROM t2 WHERE name='hechunyang'); 子查询在MySQL5.5版本里,内部执行 ...
- 我理解的MVCC内部实现原理
MySQL InnoDB存储引擎,实现的是基于多版本的并发控制协议——MVCC (Multi-Version Concurrency Control) (注:与MVCC相对的,是基于锁的并发控制,Lo ...
- DPDK收发包全景分析
前言:DPDK收发包是基础核心模块,从网卡收到包到驱动把包拷贝到系统内存中,再到系统对这块数据包的内存管理,由于在处理过程中实现了零拷贝,数据包从接收到发送始终只有一份,对这个报文的管理在前面的mem ...
- 转载 二十篇java技术热文
转自微信公众号:java知音 1,详解java类的生命周期 2,Java反射最佳实践 3,Spring的IOC原理 4,Java并发编程:volatile关键字解析 5,Java Thread 总结 ...
- Python正则表达式的七个使用范例-乾颐堂
作为一个概念而言,正则表达式对于Python来说并不是独有的.但是,Python中的正则表达式在实际使用过程中还是有一些细小的差别. 本文是一系列关于Python正则表达式文章的其中一部分.在这个系列 ...
- Java 读取jar内的文件的超简便方法
坑爹的java课程设计,偏要用jar来运行 读取.存储jar内文件的支持也好低 存储方法: 进入jar文件其实没有说的那么困难,jar文件本质是一个zip格式的压缩文件,只是把文件后缀名改了,要用Ja ...
- 【原创】cython and python for kenlm
未经允许不可转载 Kenlm相关知识 Kenlm下载地址 kenlm中文版本训练语言模型 如何使用kenlm训练出来的模型C++版本 关于Kenlm模块的使用及C++源码说明 加载Kenlm模块命令 ...