[iOS 13] UITabBarItem 标题颜色设置适配及 UITabBarAppearance 设置无效问题

在iOS13升级后,解决公司APP中UITabBarController标题颜色异常问题,介绍如何使用UITabBarItem.standardAppearance进行适配,并分享在不同添加方式下设置生效的情况。

在iOS 13升级之后,发现公司APP的UITabBarController上的所有小标题颜色发生异常。

对比之后,发现在iOS 12系统下,这些标题文字的颜色仍然是设置的红色,而在iOS 13中,表现为常见的系统默认蓝。

原来的写法:

viewController.tabBarItem.title = title;
[viewController.tabBarItem setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor colorWithRed:246.0 / 255.0 green:92.0 / 255.0 blue:92.0 / 255.0 alpha:1.0]} forState:UIControlStateSelected];

经过Google和查看官方文档,在iOS 13中,Apple将设置UITabBarItem的文字属性的任务,交给了13中新添加的属性UITabBarItem.standardAppearance。

下面是适配iOS 13的写法:

viewController.tabBarItem.title = title;
if (@available(iOS 13.0, *)) {
    UITabBarAppearance *appearance = [UITabBarAppearance new];
    // 设置未被选中的颜色
    appearance.stackedLayoutAppearance.normal.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};
    // 设置被选中时的颜色
    appearance.stackedLayoutAppearance.selected.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor colorWithRed:246.0 / 255.0 green:92.0 / 255.0 blue:92.0 / 255.0 alpha:1.0]};
    
    viewController.tabBarItem.standardAppearance = appearance;
} else {
    [viewController.tabBarItem setTitleTextAttributes:@{NSForegro
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值