UITabBarItem与VC标题的样式赏析

初始化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标题却无影响。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容