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