Open3
[iOS][SwiftUI] グローバルな外観設定
ピン留めされたアイテム
アプリのナビゲーションバーやタブバーについて、グローバルな外観設定についてメモ
実装の頻度が少なく、忘れがちであるため備忘録として残す
NavigationBarの外観設定
アプリ起動時の処理で以下を追加する
let navigationBarAppearance = UINavigationBarAppearance()
navigationBarAppearance.configureWithTransparentBackground()
navigationBarAppearance.backgroundColor = .white // 背景色
navigationBarAppearance.shadowColor = .clear // 影の色
navigationBarAppearance.titleTextAttributes = [.foregroundColor: UIColor.gray] // タイトルの文字色
navigationBarAppearance.largeTitleTextAttributes = [.foregroundColor: UIColor.gray] // LargeTitleの文字色
navigationBarAppearance.setBackIndicatorImage(UIImage(named: "back_indicator_icon"), transitionMaskImage: UIImage(named: "back_indicator_icon")) // 戻るボタンの画像
UINavigationBar.appearance().standardAppearance = navigationBarAppearance // 通常のナビゲーションバー
UINavigationBar.appearance().compactAppearance = navigationBarAppearance // LargeTitleのナビゲーションバー
UINavigationBar.appearance().scrollEdgeAppearance = navigationBarAppearance // Landscapeのナビゲーションバー
if #available(iOS 15.0, *) {
UINavigationBar.appearance().compactScrollEdgeAppearance = navigationBarAppearance
}
TabBarの外観設定
アプリ起動時の処理で以下を追加する
let tabBarAppearance = UITabBarAppearance()
tabBarAppearance.configureWithOpaqueBackground()
tabBarAppearance.backgroundColor = .white
// stackedLayoutAppearance: 通常のタブバー
// タブ選択時のテキスト設定
tabBarAppearance.stackedLayoutAppearance.selected.titleTextAttributes = [.foregroundColor: UIColor.brack, .font: UIFont.systemFont(ofSize: 10, weight: .bold)]
// タブ選択時のアイコン設定
tabBarAppearance.stackedLayoutAppearance.selected.iconColor = UIColor.black
// タブ非選択時のテキスト設定
tabBarAppearance.stackedLayoutAppearance.normal.titleTextAttributes = [.foregroundColor: UIColor.gray, .font: UIFont.systemFont(ofSize: 10, weight: .medium)]
// タブ非選択時のアイコン設定
tabBarAppearance.stackedLayoutAppearance.normal.iconColor = UIColor.gray
// inlineLayoutAppearance: iPad及びアイコンとラベルが横並びの場合のタブバー
// タブ選択時のテキスト設定
tabBarAppearance.inlineLayoutAppearance.selected.titleTextAttributes = [.foregroundColor: UIColor.brack, .font: UIFont.systemFont(ofSize: 10, weight: .bold)]
// タブ選択時のアイコン設定
tabBarAppearance.inlineLayoutAppearance.selected.iconColor = UIColor.black
// タブ非選択時のテキスト設定
tabBarAppearance.inlineLayoutAppearance.normal.titleTextAttributes = [.foregroundColor: UIColor.gray, .font: UIFont.systemFont(ofSize: 10, weight: .medium)]
// タブ非選択時のアイコン設定
tabBarAppearance.inlineLayoutAppearance.normal.iconColor = UIColor.gray
// compactInlineLayoutAppearance: landscape表示の場合のタブバー
// タブ選択時のテキスト設定
tabBarAppearance.compactInlineLayoutAppearance.selected.titleTextAttributes = [.foregroundColor: UIColor.brack, .font: UIFont.systemFont(ofSize: 10, weight: .bold)]
// タブ選択時のアイコン設定
tabBarAppearance.compactInlineLayoutAppearance.selected.iconColor = UIColor.black
// タブ非選択時のテキスト設定
tabBarAppearance.compactInlineLayoutAppearance.normal.titleTextAttributes = [.foregroundColor: UIColor.gray, .font: UIFont.systemFont(ofSize: 10, weight: .medium)]
// タブ非選択時のアイコン設定
tabBarAppearance.compactInlineLayoutAppearance.normal.iconColor = UIColor.gray
UITabBar.appearance().standardAppearance = tabBarAppearance
if #available(iOS 15.0, *) {
UITabBar.appearance().scrollEdgeAppearance = tabBarAppearance
}
UITabBar.appearance().barTintColor = .white