iOS Version: iOS 27 Beta Xcode: Xcode27 Beta 2
I have a custom UITabBar subclass. The tab bar items are visible and selectable, and the selected state works, but the title color in the normal state is always rendered as white, even though I set a different normal title color. Simplified code
let normalColor = UIColor.gray
let selectedColor = UIColor.orange
let bgColor = UIColor.black
let font = UIFont.systemFont(ofSize: 10, weight: .semibold)
let appearance = UITabBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundEffect = nil
appearance.backgroundColor = bgColor
appearance.shadowColor = .clear
let itemAppearance = appearance.stackedLayoutAppearance
itemAppearance.normal.titleTextAttributes = [
.font: font,
.foregroundColor: normalColor
]
itemAppearance.selected.titleTextAttributes = [
.font: font,
.foregroundColor: selectedColor
]
itemAppearance.normal.iconColor = normalColor
itemAppearance.selected.iconColor = selectedColor
appearance.stackedLayoutAppearance = itemAppearance
appearance.inlineLayoutAppearance = itemAppearance
appearance.compactInlineLayoutAppearance = itemAppearance
tabBar.standardAppearance = appearance
if #available(iOS 15.0, *) {
tabBar.scrollEdgeAppearance = appearance
}
tabBar.backgroundColor = bgColor
tabBar.isTranslucent = false
The problem:
- The selected title/icon color works.
- The normal title color is ignored and stays white.
This happens after moving to the newer tab bar appearance behavior / Liquid Glass environment. Question: Is there any additional configuration required for UITabBarAppearance so that the normal UITabBarItem title color is respected? Could unselectedItemTintColor, tintColor, scrollEdgeAppearance, or Liquid Glass behavior override normal.titleTextAttributes?