ObjecTips

Swift & Objective-C で iOS とか macOS とか

SwiftUI でアプリ全体のアクセントカラーを指定する Accent color for the entire SwiftUI app

新規アプリで Xcode のテンプレートからプロジェクトを作成すると Assets.xcassets に AccentColor という名称のカラーアセットが用意されている。これに色を設定するとアプリ全体の AccentColor として反映される。

f:id:Koze:20210709233353p:plain

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {
            Button("Button") {
            }
            .toolbar {
                ToolbarItem(placement: .automatic) {
                    Button(action: {}, label: {
                        Text("Button")
                    })
                }
            }
        }
    }
}

f:id:Koze:20210709233802p:plain:w300

既存プロジェクトの場合

既存プロジェクトの場合は同名のカラーアセット AccentColor を用意するだけでは反映されない。
プロジェクトテンプレートのビルド設定を見ると Global Accent Color Name という項目がありそこに AccentColor の名称が指定されていた。
設定キーは ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME らしい。 ビルド時にはこの値を見てコンパイルされる。

f:id:Koze:20210709234744p:plain

なのでカラーアセットの名称も AccentColor 固定ではなくてここで自由に設定する事ができる。*1

*1:記事タイトルに SwiftUI と入れたけどこの設定は UIKit でも同じ