美文网首页常用组件iOS开发#iOS#HeminWon
iOS 之UINavigationController(导航控制

iOS 之UINavigationController(导航控制

作者: CarsonChen | 来源:发表于2016-03-11 20:38 被阅读1129次

    一. UINavigationController

    UINavigationCOntroller导航控制器,是iOS中最常用的多视图控制器之一,用它来管理多个视图控制器. 导航控制器可以称为是,管理视图控制器的控制器,主要管理有层次递进关系的控制器.

    UINavigationController继承于UIViewController,以栈的方式管理所有控制的视图控制器,至少要有一个被管理的视图控制器,这个控制器我们称作,导航控制器的根视图控制器.

    任何继承自UIViewController的类(多态)都可以座位根控制器.

    导航控制器的创建方法:

    RootViewController *rootVC = [[RootViewController alloc] init];

    UINavigationController *NC = [[UINavigationController alloc] initWithRootViewController:rootVC];

    self.window.rootViewController = NC;

    制定的页面中,在上方都是出现一层导航栏的.

    二. UINavigationBar

    因为导航栏是唯一的,所以对导航栏自身的设置会影响到每一个页面,

    导航栏的半透明效果会影响self.view子视图的坐标系.

    translucent属性为BOOL值,是否打开或者关闭半透明效果.

    半透明效果打开,子视图的坐标系原点是屏幕的左上角.

    半透明效果关闭,子视图的坐标原点是导航栏的左下角,状态栏高度是20,导航栏的高度是44

    修改导航栏的背景颜色 barTintColor

    修改导航栏的背景图片 setBackgroundImage:forBarMetrics:

    隐藏导航栏 hidden 为BOOL类型,默认为YES

    对NavigationItem 视图控制器进行修改,之影响当前页面,每一个页面都有自己的navigationItem

    设置标题,title

    自定义titleView中间的view  titleView

    设置导航栏上视图被渲染的颜色

    tintColor

    导航栏的颜色

    barTintColor

    导航栏背景的颜色

    backgroundColor (会被分层盖住)

    三. 页面跳转

    UINavigationCOntroller通过栈的方式管理控制器的切换,控制入栈和出栈来展示各个视图控制器.UINavigationController的ContentView里始终显示栈顶控制器的view.viewControllers属性是一个可变数组(NSMutableArray)存储了栈中的所有被管理的控制器,入栈的时候,使用addObject把新的视图控制器对象添加到数组末尾,出栈时removeLastObject移除数组末尾的视图控制器对象.navigationController属性,父类中的属性,每个在栈中的控制器,都能通过此属性获得自己所在的UINavigationController对象.

    pushViewController:animated:进入下一个视图控制器

    popViewControllerAnimated:返回上一个视图控制器

    popToVIewController:animated:返回指定的视图控制器

    viewControllers[0]为一个数组

    popToRootViewControllerAnimated: 返回根视图控制器

    四. 模态(modal)

    模态跳转至下一页:

    1. 创建第二页对象

    SecondViewController *secVC = [[SecondViewController alloc] init];

    2. 设置过渡动画(有默认值,可以不设置)

    secVC.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    3. 模态控制器 a. 第二页对象 b. 是否使用动画 c. 模态完成后执行的block

    [self presentViewController:secVC animated;YES completion:^{}];

    返回上一页 参数1是否需要动画 参数2返回后执行的block

    模态跳转至上一页:

    [self dismissViewControllerAnimated:YES completion:^{}];

    页面切换方式的对比:

    页面的切换方式主要分为:推出(push)和模态(present)

    推出(push)用于一系列的视图之间的跳转,有层次递进关系

    模态(present)用于单独功能页面的跳转和主要业务逻辑没有关联(登录,歌曲播放页,系统相册,应用中调用系统功能)

    相关文章

      网友评论

        本文标题:iOS 之UINavigationController(导航控制

        本文链接:https://www.haomeiwen.com/subject/ackxlttx.html