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的方法 一般都会由两个部分组 ...
随机推荐
- js月份,日期加一天
js没有直接可以用的函数,所以只能自己写,其中需要涉及到每个月天数的判断,如果是2月份的话,还要涉及到闰年的判断 var addDate = { //日期,在原有日期基础上,增加days天数,默认增加 ...
- Xamarin.Android广播接收器与绑定服务
一.前言 学习了前面的活动与服务后,你会发现服务对于活动而言似乎就是透明的,相反活动对于服务也是透明的,所以我们还需要一中机制能够将服务和活动之间架起一座桥梁,通过本节的学习,你将会学到广播与绑定服务 ...
- 《高性能javascript》一书要点和延伸(下)
第六章 快速响应的用户界面 本章开篇介绍了浏览器UI线程的概念,我也突然想到一个小例子,这是写css3动画的朋友都经常会碰到的一个问题: <head> <meta charset=& ...
- a different object with the same identifier value was already associated with the session:
hibernate操作: 实例化两个model类,更新时会提示 a different object with the same identifier value was already assoc ...
- Entity Framework 6 Recipes 2nd Edition(12-8)译 -> 重新获取一个属性的原始值
12-8. 重新获取一个属性的原始值 问题 在实体保存到数据库之前,你想重新获取属性的原始值 解决方案 假设你有一个模型 (见 Figure 12-11) 表示一个员工( Employee),包含工资 ...
- Livecoding.tv2.5发布,增加“用户搜索引擎”功能,方便用户找到匹配的程序员
近日,在Livecoding.tv最新发布的博客中,介绍了该平台2.5版的一系列新功能,其中的User Discovery Engine(用户搜索引擎)受到大家的欢迎.使用该引擎,可以很方便地查找在L ...
- Python标准模块--argparse
1 模块简介 你一定很奇怪Python是如何命令行中的变量的吧?argparse就是用来解决这个问题的,argparse是optparse的替代. 2 模块使用 2.1 开始 我发现解释一个编程的概念 ...
- Php基础知识测试题
一:选择题 1. LAMP具体结构不包含下面哪种(A ) A:Windows系统 如果是这个就是WMP B:Apache服务器 C:MySQL数据库 D:PHP语 ...
- 安卓Design包之超强控件CoordinatorLayout与SnackBar的简单使用
在前面的Design中,学习使用了TabLayout,NavigationView与DrawerLayout实现的神奇效果,今天就带来本次Design包中我认为最有意义的控件CoordinatorLa ...
- 【Android】开发中个人遇到和使用过的值得分享的资源合集
Android-Classical-OpenSource Android开发中 个人遇到和使用过的值得分享的资源合集 Trinea的OpenProject 强烈推荐的Android 开源项目分类汇总, ...