新手開發者在這里。我目前正在開發一個允許在深色和淺色模式之間切換配色方案的應用程式。我正在嘗試設定將在整個應用程式中更改的自定義顏色。我有一個可行的實作,但我不確定它是最好的方法。我有一個類設定為 ObservableObject。該類包含一個帶有顏色串列的結構,并具有根據狀態決定應用該串列中哪些顏色的屬性。
class CustomColorScheme: ObservableObject {
@AppStorage("darkModeEnabled", store: .standard) var darkModeEnabled: Bool = false
var backgroundColor: Color {
darkModeEnabled ? colorList.darkGrey : colorList.offWhite
}
struct colorList {
static let offWhite = Color(red: 0.941, green: 0.941, blue: 0.941)
static let darkGrey = Color(red: 0.145, green: 0.145, blue: 0.145)
}
}
哪個作業正常。但是當我嘗試為更改設定影片時,我會失去它,而不是在兩者之間進行硬切換。目前我正在這樣做。
struct MyView: View {
@StateObject var customColors: CustomColorScheme
var body: some View {
Rectangle()
.foregroundColor(customColors.backgroundColor).animation(.default)
}
}
影片修改器已被棄用,我顯然應該使用 withAnimation 但我不知道如何在這種情況下應用它。這真的是最好的方法嗎?
uj5u.com熱心網友回復:
你的代碼甚至可以編譯嗎?StateObject應該有一個默認值。像這樣的東西:
@StateObject var customColors = CustomColorScheme()
為了能夠觀察影片,首先需要發生的是視圖重繪。值的變化darkModeEnabled可以強制重繪。
要查看影片,您將擁有以下內容:
.foregroundColor(customColors.darkModeEnabled)
.animation(Animation.easeIn(duration: 2), value: customColors.darkModeEnabled)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/491682.html
