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的方法 一般都会由两个部分组 ...
随机推荐
- JAVA通信系列二:mina入门总结
一.学习资料 Mina入门实例(一) http://www.cnblogs.com/juepei/p/3939119.html Mina入门教程(二)----Spring4 集成Mina http:/ ...
- ASP.NET MVC Model绑定(一)
ASP.NET MVC Model绑定(一) 前言 ModelMetadata系列的结束了,从本篇开始就进入Model绑定部分了,这个系列阅读过后你会对Model绑定有个比较清楚的了解, 本篇对于Mo ...
- 迟来的Json反序列化
源码发布 搞了一个下午,终于搞定了这个号称中国的github...以后源码直接在这里发布了(github实在用不来,英文实在太烂了) https://code.csdn.net/jy02305022/ ...
- ABP框架 - 值对象
文档目录 本节内容: 简介 值对象基类 最佳实践 简介 “一个表示领域的一个描述性方面的没有概念上的身份对象,称为值对象.“(Eric Evans). 与一个有身份(Id)实体相反,一个值对象没有身份 ...
- nfs 笔记 2
http://woxihuanpes.blog.163.com/blog/static/12423219820097139145238/ http://blog.csdn.net/willvc123/ ...
- JS对象继承篇
JS对象继承篇 ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的 原型链 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person() ...
- 深入MySQL索引
MySQL索引作为数据库优化的常用手段之一在项目优化中经常会被用到, 但是如何建立高效索引,有效的使用索引以及索引优化的背后到底是什么原理?这次我们深入数据库索引,从索引的数据结构开始说起. 索引原理 ...
- 【PRINCE2是什么】PRINCE2认证之七大原则(7)
我们先来回顾一下,PRINCE2七大原则分别是持续的业务验证,经验学习,角色与责任,按阶段管理,例外管理,关注产品,剪裁 第七个原则:根据项目环境剪裁 PRINCE2的价值在于它是一个通用的项目管理方 ...
- canvas第一天
第一次接触canvas,<canvas></canvas>是html5出现的新标签,IE9开始支持,像所有的dom对象一样它有自己本身的属性.方法和事件,其中就有绘图的方法,j ...
- SQL Server 远程连接出错~~~无法访问服务器
异常处理汇总 ~ 修正果带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4599258.html 代理开一下 tcp/ip协议开一下 收工