iOS 开发学习之 User Interface(7)UINavigationController 与 UITabBarController
2016-01-17 17:16
555 查看
导航控制器 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 可视化
是一个容器视图控制器,用于切换具有层次关系的视图,而非同一级视图间的切换。
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 可视化
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- 分享一个iOS下实现基本绘画板功能的简单方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器