UINavigationViewContrller 导航控制器

概述:
    UINavigationController 是iOS中得页面布局控制器之一, 继承自UIViewController,职责是管理一组具有从属(层次)关系的视图控制器,即: UINavigationController 是一个管理视图控制器的试图控制器.UInavigationController通过维护一个栈, 来实现不同试图控制器之间的切换, 通常这些视图控制器具有从属关系.
    UINavigationController有三个子视图: navigationBar/ custom Content(“栈”中对应的视图控制器View), toolBar(默认nil)
   UINavigationController的使用主要包括: 对视图显示的控制(入栈/出栈; 对导航条的自定义(导航条外观的控制); navigationItem的使用

1. UINavigationController
1.1 概述
    导航控制器提供了方法用管理所管理的视图控制器器的入栈/出栈
    提供了丰富的方法用于管理bar(包含导航条和工具条)的显示与隐藏功能(包括手势控制)

1.2 基本属性方法

@property ( nonatomic ,   readonly ,   retain )   UIViewController  * topViewController
@property ( nonatomic ,   readonly ,   retain )   UIViewController  * visibleViewController ( topViewController代表当前navigation栈中最上层的VC,而visibleViewController代表当前可见的VC,它可能是topViewController,也可能是当前topViewController present出来的VC。因此UINavigationController的这两个属性通常情况下是一样,但也有可能不同。 )
@property ( nonatomic ,   copy )   NSArray  * viewControllers ( 可以实现一次性替换整个navigationController的层次 )
- ( void ) setViewControllers: ( NSArray * ) viewControllers
                  animated: ( BOOL ) animated
导航控制器所管理的视图
- ( void ) pushViewController: ( UIViewController * ) viewController
                  animated: ( BOOL ) animated
- ( UIViewController * ) popViewControllerAnimated: ( BOOL ) animated
- ( NSArray * ) popToRootViewControllerAnimated: ( BOOL ) animated
- ( NSArray * ) popToViewController: ( UIViewController * ) viewController
                        animated: ( BOOL ) animated
@property ( nonatomic ,   readonly )   UIGestureRecognizer * interactivePopGestureRecognizer
导航控制器的入栈/出栈管理
@property ( nonatomic ,   readonly )   UINavigationBar  * navigationBar
- ( void ) setNavigationBarHidden: ( BOOL ) hidden
                      animated: ( BOOL ) animated
导航条管理
@property ( nonatomic ,   readwrite ,   assign )   BOOL   hidesBarsOnTap
@property ( nonatomic ,   readwrite ,   assign )   BOOL   hidesBarsOnSwipe (是否可以通过手势控制navigation Bar 和 tool Bar)
@property ( nonatomic ,   readwrite ,   assign )   BOOL   hidesBarsWhenVerticallyCompact(垂直状态隐藏bar)
@property ( nonatomic ,   readwrite ,   assign )   BOOL   hidesBarsWhenKeyboardAppears(出现键盘时,隐藏bar)
@property ( nonatomic ,   getter = isNavigationBarHidden )   BOOL   navigationBarHidden

bar的显示或者隐藏
@property ( nonatomic ,   assign )   id <   UINavigationControllerDelegate  >   delegate
入栈 出栈状态
@property ( nonatomic ,   readonly )   UIToolbar  * toolbar
- ( void ) setToolbarHidden: ( BOOL ) hidden
                animated: ( BOOL ) animated
@property ( nonatomic ,   getter = isToolbarHidden )   BOOL   toolbarHidden
- ( void ) showViewController: ( UIViewController * ) vc
                    sender: ( id ) sender

2. UINavigationBar
    2.1 概述
导航条采用栈的形式管理item(管理对应的视图控制器的UINavigationItem). 首先navigationBar由四部分组成: leftBarButtonItem, rightBarButtonItem, backBarButtonItem, title, 当一个view Controller 添加到navigationController以后, navigationBar的显示遵循一下几个原则: 

  1> Left side of the navigationBar

  a)如果当前的viewController设置了leftBarButtonItem,则显示当前VC所自带的leftBarButtonItem。

  b)如果当前的viewController没有设置leftBarButtonItem,且当前VC不是rootVC的时候,则显示前一层VC的backBarButtonItem。如果前一层的VC没有显示的指定backBarButtonItem的话,系统将会根据前一层VC的title属性自动生成一个back按钮,并显示出来

  c)如果当前的viewController没有设置leftBarButtonItem,且当前VC已是rootVC的时候,左边将不显示任何东西。

  此处注意:5.0中新增加了一个属性leftItemsSupplementBackButton,通过指定该属性为YES,可以让leftBarButtonItem和backBarButtonItem同时显示,其中leftBarButtonItem显示在backBarButtonItem的右边。

  2> title部分

  a)如果当前VC通过 .navigationItem.titleView指定了自定义的titleView,系统将会显示指定的titleView,此处要注意自定义titleView的高度不要超过navigationBar的高度,否则会显示出界。

  b)如果当前VC没有指定titleView,系统则会根据当前VC的title或者当前VC的navigationItem.title的内容创建一个UILabel并显示,其中如果指定了navigationItem.title的话,则优先显示navigationItem.title的内容。

  3> Right side of the navigationBar

  a)如果当前VC指定了rightBarButtonItem的话,则显示指定的内容。

  b)如果当前VC没有指定rightBarButtonItem的话,则不显示任何东西。
    2.2 基本属性方法
UINavigationBar 的属性方法, 主要用于实现UINavigationBar外观的自定义
@property ( nonatomic ,   retain )   UIImage  * backIndicatorImage
@property ( nonatomic ,   retain )   UIImage  * backIndicatorTransitionMaskImage
同时实现这两个方法, 用以更改返回按钮的图标
@property ( nonatomic ,   assign )   UIBarStyle  barStyle     改变导航条样式
@property ( nonatomic ,   retain )   UIColor  * barTintColor   修改导航条整体的颜色
@property ( nonatomic ,   retain )   UIColor  * tintColor 修改导航条上内容的颜色
@property ( nonatomic ,   assign ,   getter = isTranslucent )   BOOL   translucent  设置半透明效果

3. UINavigationItem
    3.1 概述
    被导航条以“栈”的形式管理的试图控制器的属性,其主要作用是管理 view 和 BarButton. 主要分为四个部分: title(titleView)/ backBarButtonItem/leftBarButtonItems/ rightBarButtonItems/
3.2 基本属性方法

@property ( nonatomic ,   copy )   NSString  * title
@property ( nonatomic ,   retain )   UIView  * titleView
@property ( nonatomic ,   copy )   NSString  * prompt   A single line of text displayed at the top of the navigation bar.
@property ( nonatomic ,   retain )   UIBarButtonItem  * backBarButtonItem (定制返回按钮, 当其所属视图控制器位于栈的第二层,且top层未设置leftBarButtonItems时 显示为top的导航条的返回按钮)
@property ( nonatomic ,   assign )   BOOL   hidesBackButton 
@property ( nonatomic )   BOOL   leftItemsSupplementBackButton ( 通过指定该属性为YES,可以让leftBarButtonItem和backBarButtonItem同时显示,其中leftBarButtonItem显示在backBarButtonItem的右边。 )
@property ( nonatomic ,   copy )   NSArray  * leftBarButtonItems
@property ( nonatomic ,   copy )   NSArray  * rightBarButtonItems

4. ToolBar
    4.1 概述
    UINavigationController自带的工具栏, 其现实的内容可以通过viewController的toolbarItems来设置, 现实的顺序也数组中存放的顺序一致.其中每一个数据都是UIBarButtonItem对象;
    4.2 基本属性
    工具条的属性方法与导航条大致一样
5. UIBarButtonItem
    初始化方法即提供了多种风格的按钮, 同时提供了自定义按钮的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值