美文网首页
iOS 设置导航栏和Tabbar的标题

iOS 设置导航栏和Tabbar的标题

作者: Superman168 | 来源:发表于2018-04-11 16:27 被阅读0次

前言

今天偶然发现,项目中自定义的导航栏有点问题,所以就改了改,不想遇到一个小问题,特此记录一下。

问题:

导航栏和 Tabbar 的问题,每个项目都会有的,之前导航栏的问题,就是在每个页面都重新创建了一个 label 来显示标题,
类似如下,不推荐使用:

    UILabel *titlelabel = [[UILabel alloc] initWithFrame: CGRectMake(0, 0, IDBScreen, 44)];
    titlelabel.backgroundColor = [UIColor clearColor];
    titlelabel.textColor=[UIColor whiteColor];
    titlelabel.textAlignment = NSTextAlignmentCenter;
    [titlelabel setFont:[UIFont systemFontOfSize:18.0]];
    [titlelabel setText:@"导航栏标题"];
    // 建议少用
    [titlelabel sizeToFit];
    self.navigationItem.titleView=titlelabel;

经 Time Profile 测试,还是比较耗性能的就去掉了,换了一种方式来实现。但是一切 OK 以后,一级页面发现设置一个 标题之后 tabbar 多了一个标题,自定义的 tabbar ,事与愿违!

解决方法:

只怪设置的方法不对;

// 这种方式也不建议使用,针对 tabbar 已有标题的设置,没有标题的话,UITabBarButtonLabel也不会创建
for (UIView *subView in self.tabBarController.tabBar.subviews) {
    if ([subView isKindOfClass:NSClassFromString(@"UITabBarButton")]) {
        // UITabBarButtonLabel
        UILabel *label = (UILabel *)[subView.subviews firstObject];
        if (label) {
            label.text = @"";
        }
    }
}
以下的方法推荐选择使用 ---
// 常用的设置方法,设置当前页面的标题,导航栏和 tabbaritem 的标题 会同时修改.
self.title = @"发现";
// 只设置当前导航栏的标题.
self.navigationItem.title = @"发现";
// 设置 tabbar 的标题,使用系统的有效果
self.tabBarItem.title = @"my title";    

根据需求选择相应的方法。

相关文章

网友评论

      本文标题:iOS 设置导航栏和Tabbar的标题

      本文链接:https://www.haomeiwen.com/subject/qgkzhftx.html