iOS 开发学习之 User Interface(7)UINavigationController 与 UITabBarController

导航控制器 UINavigationController

   是一个容器视图控制器,用于切换具有层次关系的视图,而非同一级视图间的切换。

   UINavigationController 继承自UIViewController ,是系统封装的容器视图控制器。

   使用栈的形式存放导航控制器的所有子视图控制器,先进后出。

——————————————————————————————

导航控制器如何管理视图控制器

    a. 导航控制器以一个视图控制器(UIViewController)为参数初始化创建自己的对象

        [UINavigationController alloc] initWithRootViewController:]

    b. 向导航控制器压入一个视图控制器

        [self.navigationController pushViewController:animated:]

    c. 从导航控制器弹出最顶层的视图控制器

        [self.navigationController popViewControllerAnimated:]

    d. 从导航控制器弹出一直到显示指定的视图控制器

        [self.navigationController popToViewController:animated:]

    f.  从导航控制器弹出一直到显示根视图控制器

        [self.navigationController popToRootViewControllerAnimated:]

    附加:各子视图需设置背景色,透明的情况下,会出现卡顿

——————————————————————————————

导航条 UINavigationBar

    导航条高度为44.

    a. 获取导航条

        self.navigationController.navigationBar

    b. 设置导航条是否为半透明

        bar.translucent = YES/NO;

        /* 设置为YES, 子视图控制器内,视图控件的坐标位置从屏幕左上角开始计算,也就是说可能会被导航条覆盖;设置为NO, 视图控件的坐标位置从导航条下方左上角开始计算。 */

    c. 设置导航条的背景色

        bar.barTintColor

        /* 在iOS7 之前(不包括7),使用bar.tintColor 设置背景色 ,目前 tintColor 用于导航条上按钮的文字颜色 */

    d. 设置导航条的背景图片

        [bar setBackgroundImage:forBarMetrics:]

        /* 图片尺寸高度若超过44,则向上扩展覆盖状态栏,

        forBarMetrics:UIBarMetrics  视图横竖模式。 */

    f. 设置导航条的风格,会影响状态栏的黑白显示

        bar.barStyle

    g. 隐藏/显示导航栏

        [self.navigationController setNavigationBarHidden:animated:]

——————————————————————————————

导航项 UINavigationItem

    UINavigationItem是UINavigationController子视图的导航项

    viewController.navigationItem

    导航项分为三部分:

    a. 标题区域

        navigationItem.title  / navigationItem.titleView

        viewController.title?---建议不用---

    b. 左侧区域

        navigationItem.leftBarButtonItem    // 单个条目

        navigationItem.leftBarButtonItems  //  多个条目

    c. 右侧区域

        navigationItem.rightBarButtonItem

        navigationItem.rightBarButtonItems

——————————————————————————————

导航控制器的工具条 UIToolBar

    工具条高度 44

    a. 获取工具条

        self.navigationController.toolBar

    b. 显示工具条

        [self.navigationController setToolbarHidden:animated:]

    c. 设置工具条背景色

        toolBar.barTintColor

    d. 设置工具条背景图片

        [toolBar setBackgroundImage:forToolbarPosition:barMetrics:]

    f. 在工具条上添加条目

        viewController.toolBarItems 

    g. 设置条目上的文字颜色

        toolBar.tintColor

——————————————————————————————

1. UITabBarController

  分栏控制器,是一个容器视图控制器,用于切换并行关系的视图,而非有层次关系的视图间的切换。

  作为容器视图控制器的一种,其使用方式与之前的自定义容器视图控制器, UINavigationController是类似的。

在视图层次上,位于window的上一层。

继承关系上,与UINavigationController一样,继承自UIViewController.

   注意与UINavigationController在对子视图控制器管理的比较,见同目录pdf。


2. UITabBarController 初始化及子视图管理

   > 初始化

   [UITabBarController alloc] init]

   > 定制UITabBar,高度49

   设置TabBar 的背景色,背景图片,前景色(类似NavigationBar)

   

   > 设置其子视图控制器

   每个子视图控制器对应一个UITabBarItem

   对于UITabBarItem初始化分以系统类型和自定义类型的方式。前者系统给定了图片和文字,后者可任意指定图片和文字。

   > 获取或设置UITabBarController选中的TabBarItem

   tabBarController.selectedIndex

   > UITabBarController 协议<UITabBarControllerDelegate>

   - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController   

/* 扩展: tabBarItem右上角的带数字的红色圈实现:tabBarItem.badgeValue */


3. UITabBarController+UINavigationController 结合实现app的一种框架

   > 每个tabBarItem对应一个NavigationController

   > 每组导航条相同背景,实现所有子视图控制器的父类

   > 每组导航下的子视图控制器中,第二个子视图控制器不显示tabBar

      viewController.hidesBottomBarWhenPushed

   实现微信框架。


4. UITabBarController 可视化



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值