美文网首页
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