如何修改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子类(更推荐)
- 创建一个继承自
UITabBarController的子类,比如CustomTabBarController - 在子类的
viewDidLoad方法里设置颜色:
class CustomTabBarController: UITabBarController { override func viewDidLoad() { super.viewDidLoad() if #available(iOS 13.0, *) { tabBar.unselectedItemTintColor = .systemPink } else { // iOS13之前用外观代理设置 UITabBar.appearance().unselectedItemTintColor = .systemPink } } }
- 回到故事板,选中你的TabBarController,在Identity Inspector里把类改为
CustomTabBarController
方法三:直接在故事板中设置(iOS13+支持)
打开故事板,选中TabBar,在Attributes Inspector里找到Unselected Tint选项,直接选择粉色即可,无需写代码。
内容的提问来源于stack exchange,提问作者ahtctn
相关产品推荐
相关产品推荐

