簡體   English   中英

忽略 SwiftUI 顏色或視圖增加的配色方案對比度

[英]Ignore increased color scheme contrast for SwiftUI Color or View

我的應用程序中的設置選項的樣式為純色背景上的圖標和旁邊的文本標簽,類似於 Apple 的 iOS 設置應用程序中的項目:

HStack(alignment: .center, spacing: 0) {
    Image(...)
    .foregroundColor(.white)
    .frame(width: 28, height: 28, alignment: .center)
    .background(
        RoundedRectangle(cornerRadius: 6, style: .continuous)
        .fill(Color.blue)) // Color may be a property instead, simplified here.
    .accessibility(hidden: true)

    Text(title)
        .font(.system(
            size: 16,
            weight: .medium,
            design: .rounded))
        .padding(.leading)
}

但是,我注意到當啟用系統“增加對比度”輔助功能選項時,我的圖標視圖的背景顏色 ( SwiftUI Color ) 會發生變化,而 Apple 設置圖標的背景顏色不會。 例如,當啟用“增加對比度”時, Color.orange看起來更像紅色。

因此,我想忽略當前配色方案的對比度設置( ColorSchemeContrast環境值),如果它設置為.increased ,只是為了我的圖標視圖的背景顏色。

不幸的是,使用環境修飾符會產生錯誤,因為.colorSchemeContrast不是可寫屬性: .environment(\\.colorSchemeContrast, .standard) Apple 也有類似的記錄: “您的應用程序不能覆蓋用戶的選擇。”。

我只是想在對比度增加時避免特定的小區域顏色變化,就像 Apple 自己所做的那樣,所以我只能假設應該有某種方法來實現這一點。

有沒有其他方法可以解決這個問題?

答案可能會遲到,但我自己偶然發現了這個問題並找到了解決方案。

支持具有自定義顏色的明暗模式

首先,每當您想使用自定義顏色並支持明暗模式時,在您的資產庫中創建自定義顏色總是一個好主意:

  • 轉到您的資產庫(通常是 images.xcassets)
  • 在資產導航器中單擊 +
  • 選擇“顏色集”並為您的新顏色命名
  • 在檢查器區域(屏幕右側),選擇“屬性檢查器”,並將“外觀”設置為“任何、亮、暗”。 這將允許您為所有外觀提供顏色。

如果您然后使用Color("testColor")UIColor(named: testColor) ,您將看到您的顏色自動適應明暗模式

期待高對比度

當用戶在其系統輔助功能設置中啟用高對比度時,您會注意到您的顏色不再預期明暗模式。 不過不用擔心,啟用此功能只需選中一個復選框即可:

  • 轉到您的資產庫
  • 選擇要支持高系統對比度的顏色
  • 選中“高對比度”復選框

這允許您為高系統對比度定義另一種自定義顏色,但默認情況下它只會復制您之前定義的顏色。

暫無
暫無

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

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