You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UITabBarAppearance在iOS15 iPad上设置标题颜色不生效问题咨询

问题原因

你仅配置了stackedLayoutAppearance样式,但iOS15及以上版本的iPad端,UITabBar默认使用inline布局,你未针对该布局配置样式,因此会显示系统默认的蓝色选中态与默认未选中态,不属于系统Bug,属于遗漏配置项。

解决方案

你需要同时为inline布局、以及iOS15新增的scrollEdgeAppearance配置相同的样式规则,修改后代码如下:

class CustomViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let tabBarAppearnace = UITabBarAppearance()
        let tabFont =  UIFont.boldSystemFont(ofSize: 18)
        
        let selectedAttributes: [NSAttributedString.Key: Any]
        = [NSAttributedString.Key.font: tabFont, NSAttributedString.Key.foregroundColor: UIColor.orange]
        let normalAttributes: [NSAttributedString.Key: Any]
        = [NSAttributedString.Key.font: tabFont, NSAttributedString.Key.foregroundColor: UIColor.black]
        
        // 适配iPhone竖屏/小屏iPad的堆叠布局
        tabBarAppearnace.stackedLayoutAppearance.normal.titleTextAttributes = normalAttributes
        tabBarAppearnace.stackedLayoutAppearance.selected.titleTextAttributes = selectedAttributes
        
        // 新增:适配iPad默认的inline布局
        tabBarAppearnace.inlineLayoutAppearance.normal.titleTextAttributes = normalAttributes
        tabBarAppearnace.inlineLayoutAppearance.selected.titleTextAttributes = selectedAttributes
        
        // 新增:适配紧凑宽度下的inline布局(如iPad横屏分屏场景)
        tabBarAppearnace.compactInlineLayoutAppearance.normal.titleTextAttributes = normalAttributes
        tabBarAppearnace.compactInlineLayoutAppearance.selected.titleTextAttributes = selectedAttributes
        
        tabBar.standardAppearance = tabBarAppearnace
        // 新增:iOS15+ 滚动到边缘时的TabBar样式,和standard保持一致即可
        if #available(iOS 15.0, *) {
            tabBar.scrollEdgeAppearance = tabBarAppearnace
        }
    }
}
补充说明
  • UITabBarAppearance包含三类布局样式,需分别配置才能覆盖所有设备和横竖屏场景:
    • stackedLayoutAppearance:堆叠布局,对应iPhone竖屏、小尺寸iPad竖屏场景
    • inlineLayoutAppearance:内嵌布局,对应常规尺寸iPad的横竖屏场景
    • compactInlineLayoutAppearance:紧凑内嵌布局,对应iPad分屏、大屏iPhone横屏场景
  • iOS15起UITabBar的scrollEdgeAppearance默认会使用磨砂透明效果,未赋值的话页面滚动到边缘时TabBar样式会和配置不一致,建议同步赋值。

内容的提问来源于stack exchange,提问作者ImWH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:54:04