iOS学习笔记-088.彩票03——设置导航条
来源:互联网 发布:杭州网站建设优化 编辑:程序博客网 时间:2024/05/17 02:59
- 彩票03设置导航条
- 一在 QWMTabBarViewController 中设置导航条
- 1 方法说明与修改
- 2 图示
- 3 缺陷与不足
- 二自定义导航控制器 1 在 viewDidLoad 中完成初始化
- 1 方法说明与修改
- 2 图示
- 3 缺陷与不足
- 三自定义导航控制器 2 在 initialize 中完成初始化
- 1 方法说明与修改
- 一在 QWMTabBarViewController 中设置导航条
彩票03——设置导航条
前面的文章中,
iOS学习笔记-086.彩票01——框架搭建
iOS学习笔记-087.彩票02——自定义tabBar
我们已经设置了好了tabBar,现在我们来设置我们的导航条。
一、在 QWMTabBarViewController 中设置导航条
1.1 方法说明与修改
我们知道,我们的根控制器是 QWMTabBarViewController
,在这里面我们创建我们需要tabBar以及对应的控制器。现在我们的五个大的分类控制器中,都有导航条,那么我们需要添加的导航条就在这个类中添加。我们需要添加导航条的方法是
-(void)setupOneChildViewController:(UIViewController *)vc image:(UIImage *)image selImage:(UIImage *)selImage
那么这个方法中,我们需要干些什么呢?
- 由于我们的导航条需要显示我们的标题,所以我们需要标题的文字,那么这个文字哪里来呢?方法传递进来,所以我们修改方法为:
-(void)setupOneChildViewController:(UIViewController *)vc image:(UIImage *)image selImage:(UIImage *)selImage title:(NSString *)title
- 我们需要导航条,那么我们可是使用导航控制器来包装我们的控制。然后设置相应的属性。
//添加一个子控制器-(void)setupOneChildViewController:(UIViewController *)vc image:(UIImage *)image selImage:(UIImage *)selImage title:(NSString *)title{// [self addChildViewController:vc]; //设置我们控制器的一些属性 vc.tabBarItem.image = image; vc.tabBarItem.selectedImage = selImage; [self.items addObject:vc.tabBarItem]; //添加标题 vc.navigationItem.title = title; //导航控制器部分---------------------- //设置导航控制器包装我们现在的控制器 UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:vc]; //设置导航条的一些属性 背景 [nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:UIBarMetricsDefault]; // 设置字体颜色大小 //创建一个集合 NSMutableDictionary *ditM = [NSMutableDictionary dictionary]; //字体颜色 ditM[NSForegroundColorAttributeName] = [UIColor whiteColor]; //字体大小 ditM[NSFontAttributeName] = [UIFont boldSystemFontOfSize:24]; [nav.navigationBar setTitleTextAttributes:ditM]; [self addChildViewController:nav];}
1.2 图示
1.3 缺陷与不足
使用现在的这种方式,我们发现,关于导航栏的东西全部放在了 QWMTabBarViewController 中。这与我们的封装思想相违背,所以我们应该把它放到导航栏中去,那么怎么放进去呢,当然是自定义啦。
二、自定义导航控制器 1 —— 在 viewDidLoad 中完成初始化
2.1 方法说明与修改
我们自定义了导航控制器,那么我们需要完成导航条的一些初始化,现在我们把这些初始化,放在 viewDidLoad 中完成
//// QWMNavigationController.m// 03_UIView79_彩票//// Created by 杞文明 on 17/8/13.// Copyright © 2017年 杞文明. All rights reserved.//#import "QWMNavigationController.h"@interface QWMNavigationController ()@end@implementation QWMNavigationController- (void)viewDidLoad { [super viewDidLoad]; //设置背景 [self.navigationBar setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:UIBarMetricsDefault]; //设置字体颜色 NSMutableDictionary *ditM = [NSMutableDictionary dictionary]; ditM[NSForegroundColorAttributeName] = [UIColor whiteColor]; //大小 ditM[NSFontAttributeName] = [UIFont boldSystemFontOfSize:24]; //设置navigationbar的属性 [self.navigationBar setTitleTextAttributes:ditM];}@end
然后我们需要在 QWMTabBarViewController 的 setupOneChildViewController
方法中进行相应的修改 。其次我们这里还创建了两个不同的导航控制器哦。
//添加一个子控制器-(void)setupOneChildViewController:(UIViewController *)vc image:(UIImage *)image selImage:(UIImage *)selImage title:(NSString *)title{// [self addChildViewController:vc]; //设置我们控制器的一些属性 vc.tabBarItem.image = image; vc.tabBarItem.selectedImage = selImage; [self.items addObject:vc.tabBarItem]; //添加标题 vc.navigationItem.title = title; //创建自滚一的导航条 UINavigationController *nav; if([vc isKindOfClass:[QWMArenaViewController class]]){ nav = [[UINavigationController alloc]initWithRootViewController:vc]; }else{ nav = [[QWMNavigationController alloc]initWithRootViewController:vc]; } [self addChildViewController:nav];}
2.2 图示
2.3 缺陷与不足
虽然我们进行了封装,实现了类的各司其职。但是我们这里会发现一个事情,我们关于导航条的设置会设置5次。我们希望设置一次就行了,却要设置5次,这下就尴尬了。那么我们接下来就想想办法只设置一次呗。
三、自定义导航控制器 2 —— 在 initialize 中完成初始化
3.1 方法说明与修改
我们只需要设置一次,那么我们可以把这个这些设置放在 initialize
中。那么问题来了,我们如何获取我们的 NavigationBar呢,其实我们可以通过标识来获取 NavigationBar 。
所以我哦们的方法修改如下
//// QWMNavigationController.m// 03_UIView79_彩票//// Created by 杞文明 on 17/8/13.// Copyright © 2017年 杞文明. All rights reserved.//#import "QWMNavigationController.h"@interface QWMNavigationController ()@end@implementation QWMNavigationController// 什么时候调用 当第一次初始这个类的时候调用// 作用 初始化这个类+ (void)initialize{ //获取导航栏标识 //appearance 是一个协议, 只要遵守了这协议都有这方法 //使用这个方法会产生的bug,它会统一定制我们的导航条,所有的导航条都是一样的,无法实现我们上面一步中实现的效果,因此,我们不能使用这个方法 //UINavigationBar *bar = [UINavigationBar appearance]; //获取某几个类的导航条标识 ,只修改我们设置的这几个导航条类的导航条 UINavigationBar *bar = [UINavigationBar appearanceWhenContainedIn:[QWMNavigationController class], nil]; //设置背景 [bar setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:UIBarMetricsDefault]; //设置字体颜色 NSMutableDictionary *ditM = [NSMutableDictionary dictionary]; ditM[NSForegroundColorAttributeName] = [UIColor whiteColor]; //大小 ditM[NSFontAttributeName] = [UIFont boldSystemFontOfSize:24]; //设置navigationbar的属性 [bar setTitleTextAttributes:ditM];}@end
阅读全文
0 0
- iOS学习笔记-088.彩票03——设置导航条
- iOS学习笔记-094.彩票09——隐藏底部tabar和统一设置返回按钮
- iOS学习笔记-097.彩票12——设置1_数据模型创建
- iOS学习笔记-098.彩票13——设置2_UITableViewCell创建
- iOS学习笔记-099.彩票14——设置3_UITableViewController基类提取
- iOS学习笔记-089.彩票04——购彩大厅1_导航栏左边按钮与修改插件
- iOS学习笔记-100.彩票15——设置4_设置和推送提醒控制器创建
- iOS学习笔记-091.彩票06——我的彩票
- iOS学习笔记-086.彩票01——框架搭建
- iOS学习笔记-087.彩票02——自定义tabBar
- iOS学习笔记-092.彩票07——竞技场
- iOS学习笔记-096.彩票11——新特性
- Bootstrap学习笔记——导航条、分页导航
- ios设置导航条背景图片
- iOS---设置导航条文字
- iOS学习笔记-101.彩票16——设置5_开奖推送和比分直播和空白的控制器创建
- jquery mobile学习笔记——navbar(导航条)
- iOS学习笔记-093.彩票08——发现和全部采种
- MySQL语句
- 二叉树的遍历(先、中、后、层序)C实现
- 如何虚拟打印PDF文件(Win7)
- HDU 1166-敌兵布阵(线段树单节点更新)
- 二进制、十进制、十六进制同步转换器
- iOS学习笔记-088.彩票03——设置导航条
- HDU1114 Piggy-Bank 完全背包
- Java连接Redis
- Java注释学习
- qt开发环境
- react native识别设备,获取设备屏幕尺寸
- Metasploit 原理 使用
- SQL Sercver的基本操作
- 排序