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的方法 一般都会由两个部分组 ...
随机推荐
- 通过Mono 在 Heroku 上运行 .NET 应用
英文原文:Running .NET on Heroku 中文原文:在 Heroku 上运行 .NET 应用 自从加入了Heroku之后,我就想在这个平台上运行.NET程序.现在我很高兴向大家宣布,我们 ...
- Xamarin.Android-用ZXing实现二维码扫描以及连续扫描
一.前言 本文的内容有两个基础:ZXing.Net和ZXing.Net.Mobile ZXing.Net:ZXing的C#实现,主要封装了各种二维码的编码.解码等跨平台的算法 ZXing.Net.Mo ...
- 玩转 Linux 系统的方法论
Linus 说“Just for fun”,而我要说“Just for 折腾”.想知道我是怎样折腾 Linux 的,请看下面这个截图: 从这个截图可以看出,我为了“折腾” Linux 系统,在我的电脑 ...
- 高薪诚聘熟悉ABP框架的.NET高级开发工程师(2016年7月28日重发)
招聘单位是ABP架构设计交流群(134710707)群主阳铭所在的公司-上海运图贸易有限公司 招聘岗位:.NET高级开发工程师工作地点:上海-普陀区 [公司情况]上海运图贸易有限公司,是由易迅网的创始 ...
- ABP源码分析二十六:核心框架中的一些其他功能
本文是ABP核心项目源码分析的最后一篇,介绍一些前面遗漏的功能 AbpSession AbpSession: 目前这个和CLR的Session没有什么直接的联系.当然可以自定义的去实现IAbpSess ...
- backup3:master 数据库的备份和还原
在SQL Server 中,master 数据库记录系统级别的元数据,例如,logon accounts, endpoints, linked servers, and system configur ...
- Happy New Year 2016
大学之前的时间都是按天来过的,期盼着一天一天地快快长大,期盼着过年穿新衣,阖家团聚,其乐融融: 大学的时间都是按周来过的,根据每周的课表周而复始,虽然单调但也是自由自在,简单充实: 刚工作的几年时间是 ...
- Android注解使用之ButterKnife 8.0注解使用介绍
前言: App项目开发大部分时候还是以UI页面为主,这时我们需要调用大量的findViewById以及setOnClickListener等代码,控件的少的时候我们还能接受,控件多起来有时候就会有一种 ...
- Android动画效果之自定义ViewGroup添加布局动画
前言: 前面几篇文章介绍了补间动画.逐帧动画.属性动画,大部分都是针对View来实现的动画,那么该如何为了一个ViewGroup添加动画呢?今天结合自定义ViewGroup来学习一下布局动画.本文将通 ...
- 1、.NET平台概述
本学习主要参考Andrew Troelsen的C#与.NET4高级程序设计,这小节主要述说以下几个东西: 宏观上讨论一下.net相关的主题:程序集.CIL(Common Interme ...