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

如何修改UITabBar未选中按钮颜色?已尝试代码方案未生效

解决UITabBar未选中按钮颜色不生效的问题

你想把UITabBar未选中按钮设置为粉色,但尝试的代码未生效。结合你提供的Main.storyboard中TabBar设置截图(当前未选中按钮为默认样式),问题根源很明确:你新建了一个UITabBarController实例,但这个实例和故事板里实际使用的TabBar没有关联,所以颜色设置根本不会作用到界面上的TabBar。

下面是几种可行的解决方法:

方法一:在AppDelegate中获取实际的根TabBarController

如果你的根视图控制器就是故事板里的UITabBarController,修改AppDelegate的代码如下:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    if #available(iOS 13.0, *) {
        // 获取窗口的根视图控制器并强转为UITabBarController
        if let tabBarController = window?.rootViewController as? UITabBarController {
            tabBarController.tabBar.unselectedItemTintColor = .systemPink
        }
    } else {
        // iOS13以下的兼容写法
        if let tabBarController = UIApplication.shared.keyWindow?.rootViewController as? UITabBarController {
            tabBarController.tabBar.unselectedItemTintColor = .systemPink
        }
    }
    return true
}

方法二:自定义UITabBarController子类(更推荐)

  1. 创建一个继承自UITabBarController的子类,比如CustomTabBarController
  2. 在子类的viewDidLoad方法里设置颜色:
class CustomTabBarController: UITabBarController {
    override func viewDidLoad() {
        super.viewDidLoad()
        if #available(iOS 13.0, *) {
            tabBar.unselectedItemTintColor = .systemPink
        } else {
            // iOS13之前用外观代理设置
            UITabBar.appearance().unselectedItemTintColor = .systemPink
        }
    }
}
  1. 回到故事板,选中你的TabBarController,在Identity Inspector里把类改为CustomTabBarController

方法三:直接在故事板中设置(iOS13+支持)

打开故事板,选中TabBar,在Attributes Inspector里找到Unselected Tint选项,直接选择粉色即可,无需写代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:07:43