常用组件iOS开发#iOS#HeminWon

iOS 之UINavigationController(导航控制

2016-03-11  本文已影响1129人  CarsonChen

一. 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)用于单独功能页面的跳转和主要业务逻辑没有关联(登录,歌曲播放页,系统相册,应用中调用系统功能)

上一篇下一篇

猜你喜欢

热点阅读