Appearance の設定方法
iOS 13 から Appearance の設定方法が追加されていた。
以前の方法もまだ非推奨になっておらず引き続き利用できるみたいだけど、 Legacy Customizations と表記されていて新しい設定方法が推奨されている。
新しい設定方法は standardAppearance プロパティによるもので、 UITabBar の場合は以下のようなコードになる。
let tabBarController = UITabBarController() let tintColor: UIColor = .green if #available(iOS 13.0, *) { let tabBarItemAppearance = UITabBarItemAppearance() tabBarItemAppearance.selected.iconColor = tintColor tabBarItemAppearance.selected.titleTextAttributes = [.foregroundColor: tintColor] let tabBarAppearance = UITabBarAppearance() tabBarAppearance.inlineLayoutAppearance = tabBarItemAppearance tabBarAppearance.stackedLayoutAppearance = tabBarItemAppearance tabBarAppearance.compactInlineLayoutAppearance = tabBarItemAppearance tabBarController.tabBar.standardAppearance = tabBarAppearance } else { UITabBar.appearance().tintColor = tintColor UITabBarItem.appearance().setTitleTextAttributes( [.foregroundColor: tintColor], for: .selected ) }
- inlineLayoutAppearance
- stackedLayoutAppearance
- compactInlineLayoutAppearance
は、端末のスクリーンサイズや portrait/landscape によっていずれかが適用されるみたいなので、例えば portrait の iPhone のみの対応とかであれば3つ全てにセットする必要はなさそうかも。