初始化UITabBarController时,对item和VC不同的设置与执行顺序,导致UITabBarItem样式不同,今天来看几种样式,欢迎大家填补。
tabBar样式默认在iPhone为上下结构,在iPad则为左右结构
UITabBarController的初始化:
/**
UITabBarController的懒加载
@return 构造的UITabBarController
*/
- (UITabBarController *)tabBarController {
if (!_tabBarController) {
_tabBarController = [[UITabBarController alloc] init];
_tabBarController.delegate = self;
NSArray *dataArray = @[@{@"IOSClASSNAME":@"PadHomeVC",@"TABBARIMAGE":@"tab_home",@"TABBARTITLE":@"Home",},@{@"IOSClASSNAME":@"WorkStationVC",@"TABBARIMAGE":@"tab_workStationHL",@"TABBARTITLE":@"WorkStation"},@{@"IOSClASSNAME":@"MessageCenterVC",@"TABBARIMAGE":@"tab_news",@"TABBARTITLE":@"Message"},@{@"IOSClASSNAME":@"MineVC",@"TABBARIMAGE":@"tab_mine",@"TABBARTITLE":@"Mine"},
];
NSMutableArray *viewControllers = [NSMutableArray array];
[dataArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
UIViewController *vc;
NSString *className = kChangeEmptyStr(obj[@"IOSClASSNAME"]);
vc = [[[NSClassFromString(className) class] alloc] init];
if (!vc) {
vc = [[UIViewController alloc]init];
}
//设置VC标题
[vc setTitle:obj[@"TABBARTITLE"]];
NSString *imageStr = obj[@"TABBARIMAGE"];
vc.tabBarItem.image = [UIImage imageNamed:imageStr];
vc.view.backgroundColor = [UIColor whiteColor];
//设置item标题
vc.tabBarItem.title = @"";
UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:vc];
[viewControllers addObject:navigation];
}];
_tabBarController.viewControllers = viewControllers;
[_tabBarController.tabBar setTintColor:UIColorFromRGB(0x3C89ED)];
}
return _tabBarController;
}
两个都设置,但是将item设置为@"",得到的样式是这样的:
item为空.png
两个都设置,item的title设置在VC后面,设置为@"News",得到这样的:
设置为News.png
两个都设置,item的title设置在VC前面,设置为@"News",得到这样的:
item先设置.png
只设置VC的标题,不设置item的:
item不设置.png
只设置item的标题,不设置VC的:
不设置VC.png
对比显示结果,可得以下结论:
1.item与VC同时设置时,VC的title如果后执行,会将item的title修改为VC的title;但是如果item的title后执行,不会影响VC的title设置。
2.只设置VC时,item会设置为VC的标题;但是只设置item则VC标题为空。
3.综合以上,VC的设置会影响item,但是item对VC标题却无影响。
网友评论