iOS 设置导航栏和Tabbar的标题

前言

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

问题:

导航栏和 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";    

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

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

相关阅读更多精彩内容

友情链接更多精彩内容