簡體   English   中英

除了暗模式和亮模式之外,Swift/SwiftUI 中的其他配色方案

[英]Additional ColorScheme in Swift/SwiftUI beside Dark Mode and Light Mode

我正在開發一個通常會在黑暗環境中使用的應用程序,顯示器的光輸出應該減少到最低限度。 所以我想用真正的黑色背景和灰色文本來設置低對比度。 如果有人在其他環境中使用該應用程序,用戶可能會考慮使用具有更高對比度的常用視圖 - 例如常用的暗模式或亮模式。 當然,我可以將所有background設置為黑色,將foregroundColor為灰色,但這需要大量代碼才能讓用戶有可能回到通常的明/暗模式。 我的方法是編寫ColorSchemeextension ,從

public extension ColorScheme {
static let evenDarker = ColorScheme.dark
}

並從那里調整色值。 在我的想象中,這應該創建了.dark的副本。 我可以打電話

  let contentView = ContentView()
        .environment(\.colorScheme, .evenDarker)

並且它的構建沒有問題,不幸的是它確實顯示了系統設置(如設備上定義的)而不是暗模式的副本。 但是,使用.dark.light調用相同的視圖會覆蓋系統設置。

此外,我在 ColorScheme 中找不到任何可能值的列表或文檔 - 例如如何將默認背景顏色從灰色覆蓋為黑色。 有沒有人得到這個或類似的東西開始工作?

與此同時,我找到了一個適用於第一個問題的解決方案:與

public extension UIUserInterfaceStyle {
static let evenDarker = UIUserInterfaceStyle.dark }

window.overrideUserInterfaceStyle = .evenDarker

效果更好,它將.dark復制到.evenDarker - 與使用 ContentView() 的環境設置不同,它還可以選擇使用.unspecified - 如果用戶想要使用系統設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM