前言
今天偶然发现,项目中自定义的导航栏有点问题,所以就改了改,不想遇到一个小问题,特此记录一下。
问题:
导航栏和 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";
根据需求选择相应的方法。
网友评论