知识点:

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的更多相关文章

  1. iOS UINavigationController(内容根据iOS编程编写)

    我们知道 UITabBarController 对象,可以通过使用该对象,用户可以切换不同的屏幕.当要切换的各个屏幕之间没有相互依存关系的时候,该对象可以很好的完成任务.但是当多个屏幕互有关系的时候, ...

  2. 混合使用UITabBarController和UINavigationController

    混合使用这两个控件的好处是我们可以在NavigationBar添加更多的东西,如标题,按钮等.让用户能够获得更多的信息. UITabBarController的属性ViewControllers接受以 ...

  3. 基本组件的使用——UINavigationController

    作用:在多个ViewController中切换.UINavigationController内部以栈的形式维护一组ViewController, 因此,当导航进入一个新视图的时候,会以push的形式将 ...

  4. 解决UINavigationController在pushViewController时出现的"卡顿"问题

    进行开发中,遇到了个小问题: 在使用UINavigationController的-pushViewController:animated:执行入栈一个子控制器操作时(即最新栈顶子控制器),会出现推出 ...

  5. UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解

    (1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最下面,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...

  6. IOS 学习 开发 自定义 UINavigationController 导航

    文件目录如下:基本导航顺序: root -> First -> Second -> Third.其中,FirstViewController作为 navigation堆栈的rootv ...

  7. APP标配控制器:UINavigationController

    导航控制器UINavigationController简介: 只要看到控制器界面上部有一个条就是导航控制器UINavigationController 导航控制器最上面有一个条是导航条高度44,Y值是 ...

  8. UIScrollerView遇到UINavigationController

    今天在UITabBarController  的第一个Tab 页面中放入一个ScrollView, 原本以为可以正常运行. 结果却让人大跌眼镜.  每当我手动滚动或者 缓慢导航到另外一个页面时,当前的 ...

  9. IOS开发之控件篇UINavigationController第一章 - 介绍

    UINavigationController是一个比较常见的控件,它连接个视图,例如一个视图走到另外一个视图,之间的联系都可以用这个NavigationController的方法 一般都会由两个部分组 ...

随机推荐

  1. 分享在Linux下使用OSGi.NET插件框架快速实现一个分布式服务集群的方法

    在这篇文章我分享了如何使用分层与模块化的方法来设计一个分布式服务集群.这个分布式服务集群是基于DynamicProxy.WCF和OSGi.NET插件框架实现的.我将从设计思路.目标和实现三方面来描述. ...

  2. 使用Hystrix提高系统可用性

    今天稍微复杂点的互联网应用,服务端基本都是分布式的,大量的服务支撑起整个系统,服务之间也难免有大量的依赖关系,依赖都是通过网络连接起来. (图片来源:https://github.com/Netfli ...

  3. React单元测试——十八般兵器齐上阵,环境构建篇

    一个完整.优秀的项目往往离不开单元测试的环节,就 github 上的主流前端项目而言,基本都有相应的单元测试模块. 就 React 的项目来说,一套完整的单元测试能在在后续迭代更新中回归错误时候给与警 ...

  4. 使用 SecurityManager 和 Policy File 管理 Java 程序的权限

    参考资料 该文中的内容来源于 Oracle 的官方文档.Oracle 在 Java 方面的文档是非常完善的.对 Java 8 感兴趣的朋友,可以从这个总入口 Java SE 8 Documentati ...

  5. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

    前言     上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库 ...

  6. Windows 2008 - 由于管理员设置的策略,该磁盘处于脱机状态

    http://blog.sina.com.cn/s/blog_59cc90640102x8m4.html 查看原文:https://www.bxl.me/9279.html准备使用云主机挂机的时候呢出 ...

  7. 4. ValueStack 和 OGNL

    1. 属性哪来的 当我们通过Action处理完用户请求以后,可以直接在页面中获取到 action 的属性值. 如果我们在页面中尝试遍历四个域中的属性,会发现域中并没有username之类的Action ...

  8. 使用UICollectionView实现首页的滚动效果

    实现类似这样的效果,可以滚动大概有两种实现方案 1. 使用scrollview来实现 2. 使用UICollectionView来实现 第一种比较简单,而且相对于性能来说不太好,于是我们使用第二种方案 ...

  9. JavaScript中尺寸、坐标

    测试环境是IE8,Chrome38,Firefox40,下面是全局通用脚本打印代码 /** * 打印 */ function write(str) { document.write(str + '&l ...

  10. .net请求URL过长,解决方案

    <system.web> 节点下加上 <httpRuntime requestValidationMode="2.0" maxQueryStringLength= ...