UINavigationController
知识点:
1)UINavigationController
2)UINavigationBar
3)UINavigationItem
4)UIToolBar
======================================================
一、UINavigationController
1、UINavigationController介绍
1)UINavigationController是导航控制器,它通过栈的方式控制当前显示在屏幕上的是哪个控制器。
2)它可以通过压入(push)和弹出(pop)来改变控制器的层次。
3)自动提供返回(Back)按钮,以回到上一个压入的控制器,不需要额外编程
4)UINavigationController会提供控制器切换的动画效果
5) UINavgationController通过栈的形式管理多个UIViewController(即多个界面)
6)可以管理当前在导航条(navigationBar)上的导航按钮
7)UINavgationController为每个接受它管理的UIViewController自动添加UINavigationBar
8)包括四部分: 1⃣️.UINavigationController
2⃣️.UIViewController
3⃣️.UINavigationBar
4⃣️.UINavigationItem
2、导航控制器的跳转
1)pushViewController: animated: 跳转,切换到下一个视图控制器(压栈)
2)popViewControllerAnimated: 返回上一层(出栈)
3)popToRootViewControllerAnimated: 返回root视图控制器(根视图控制器)
4)popToViewController: animated: 返回到指定层
5) setViewControllers:(NSArray<UIViewController *>)animated:同时为UINavgationController设置所有的UIViewController
=====================================================
二、UINavigationBar(受UINavigationController管理)
1、UINavigationBar位于屏幕顶端的控件,通常只是作为多个UINavigationBar的容器,同样是以栈的 形式来管理多个UINavigationItem控件
2、UINavigationBar常用方法和属性
1)backgroundColor 设置导航栏的背景色,毛玻璃边效果
2)barTintColor 设置纯色背景 3)barStyle 状态栏系统样式(很少使用,一般我们都会加上背景图片)
4)setBackgroundImage: forBarMetrics:
7.0之前,导航的高度为44
7.0之后,导航的高度为64
Metrics 指在什么状态下的图片(横32,竖64)
a)UIBarMetricsDefault 竖屏
(以下两个方法使用之前可以先判断当前的版本号再决定使用哪个)
通过该方法获取版本号:[[[UIDevice currentDevice] systemVersion] floatValue]
b)UIBarMetricsCompact 横屏 iOS8.0之后的方法
c)UIBarMetricsLandscapePhone iOS8.0之前的横屏方法
5) hidden属性,YES为隐藏导航栏,NO为显示
=========================================================
三、UINavigationItem
1、UINavigationItem常用方法和属性
标题相关
1)title 设置导航标题
2)titleTextAttributes 设置导航栏标题的文字大小(key:NSFontAttributeName)和颜色(key:NSForegroundColorAttributeName)
3)titleView 设置标题的UIView(可以使用自定义的)
按钮相关(UIBarButtonItem)主要有右按钮rightBarButtonItem、左按钮leftBarButtonItem,还有多个按钮
rightBarButtonItems:(NSArray)、leftBarButtonItems:(NSArray)
4)initWithBarButtonSystemItem: target action: 系统自带的样式
5)initWithCustomView: 自定义item样式
6)initWithImage: style: target: action: 以图片方式设置item样式
7)initWithTitle: style: target: action: 以文字样式设置item
8)tintColor 渲染item颜色
9)弹簧效果
这是系统的样式,得指定弹开的宽度:UIBarButtonSystemItemFixedSpace
width 设置弹开的宽度
这是系统的样式,会自动弹开:UIBarButtonSystemItemFlexibleSpace
10)hidesBackButton 该属性设置是否显示左上角的back按钮,YES为隐藏
======================================================
四、UIToolBar
1、UIToolBar介绍
1)UIToolBar存在于UINavigationController控制器中
2)UIToolBar默认显示在UINavigationController的底部位置,且默认被隐藏
3)当我们需要在屏幕的底部加一些按钮时我们就可以使用UIToolBar来设置他,不需要自己去创建UIView
4)创建UIToolBar需要先创建一个UINavigationController控制器
2、UIToolBar的常用方法和属性
1)setBackgroundImage: forToolbarPosition: barmetrics:
设置toolBar的背景图片,UIToolBar的高度为44
2)setToolBarHidden: animated: 设置toolBar的隐藏和显示
UINavigationController的更多相关文章
- iOS UINavigationController(内容根据iOS编程编写)
我们知道 UITabBarController 对象,可以通过使用该对象,用户可以切换不同的屏幕.当要切换的各个屏幕之间没有相互依存关系的时候,该对象可以很好的完成任务.但是当多个屏幕互有关系的时候, ...
- 混合使用UITabBarController和UINavigationController
混合使用这两个控件的好处是我们可以在NavigationBar添加更多的东西,如标题,按钮等.让用户能够获得更多的信息. UITabBarController的属性ViewControllers接受以 ...
- 基本组件的使用——UINavigationController
作用:在多个ViewController中切换.UINavigationController内部以栈的形式维护一组ViewController, 因此,当导航进入一个新视图的时候,会以push的形式将 ...
- 解决UINavigationController在pushViewController时出现的"卡顿"问题
进行开发中,遇到了个小问题: 在使用UINavigationController的-pushViewController:animated:执行入栈一个子控制器操作时(即最新栈顶子控制器),会出现推出 ...
- UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解
(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最下面,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...
- IOS 学习 开发 自定义 UINavigationController 导航
文件目录如下:基本导航顺序: root -> First -> Second -> Third.其中,FirstViewController作为 navigation堆栈的rootv ...
- APP标配控制器:UINavigationController
导航控制器UINavigationController简介: 只要看到控制器界面上部有一个条就是导航控制器UINavigationController 导航控制器最上面有一个条是导航条高度44,Y值是 ...
- UIScrollerView遇到UINavigationController
今天在UITabBarController 的第一个Tab 页面中放入一个ScrollView, 原本以为可以正常运行. 结果却让人大跌眼镜. 每当我手动滚动或者 缓慢导航到另外一个页面时,当前的 ...
- IOS开发之控件篇UINavigationController第一章 - 介绍
UINavigationController是一个比较常见的控件,它连接个视图,例如一个视图走到另外一个视图,之间的联系都可以用这个NavigationController的方法 一般都会由两个部分组 ...
随机推荐
- subline text3 使用总结
安装:http://www.sublimetext.com/3 插件扩展: 安装package control组件 按Ctrl+`调出console(注:安装有QQ输入法的这个快捷键会有冲突的,输入 ...
- 面向组合子设计Coder
面向组合子 面向组合子(Combanitor-Oriented),是最近帮我打开新世界大门的一种pattern.缘起haskell,又见monad与ParseC,终于ajoo前辈的几篇文章. 自去年9 ...
- 再来说说 LaTeX
在我的上一篇随笔中,我提到了 Markdown.LaTeX 和 MathJax.这几个东西对目前的网络技术文章的写作.展示都有深远的影响.在上一篇中,我还给出了一份 LaTeX 语法的学习资料.在这一 ...
- Electron 不完全快速手册
Electron能干嘛 Vscode 基于Electron开发的,他是用来开发桌面软件的,可以轻易的跨平台 他的前身是atomshell,图标很丑,不用在意,一点也不像vscode也不用在意. L ...
- postman使用
1.postman的下载:google首页左上角应用,点击后,如果没有下载postman,就在google商店搜索,点击右边按钮 2.下载后重新打开google首页,点击应用,可以看到已经下载过了,点 ...
- Bucket不为空,请检查该Bucket是否包含未删除的Object或者未成功的Multipart碎片
异常处理汇总 ~ 修正果带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4599258.html 图示解决==>详细如下:
- require() 源码解读
2009年,Node.js 项目诞生,所有模块一律为 CommonJS 格式. 时至今日,Node.js 的模块仓库 npmjs.com ,已经存放了15万个模块,其中绝大部分都是 CommonJS ...
- Android之自定义View的实现
对于学习Android开发的小童鞋对于自定义View一定不会陌生,相信大家对它是又爱又恨,爱它可以跟随我们的心意设计出漂亮的效果:恨它想要完全流畅掌握,需要一定的功夫.对于初学者来说确实很不容易,网上 ...
- FWaaS 实践: 允许 ssh - 每天5分钟玩转 OpenStack(119)
上一节应用了无规则的虚拟防火墙,不允许任何流量通过. 今天我们会在防火墙中添加一条规则,允许 ssh.最后我们会对安全组和 FWaaS 作个比较. 下面我们添加一条 firewall rule:允许 ...
- AngularJS之指令
紧接上篇博客“初探AngularJS” 一.前言 在AngularJS中指令尤为重要且内容庞多,固单独提炼出来,梳理一番.如有错误,请不吝讲解. 好了,言归正传,让我们一起走进Angular指令的世界 ...