覆盖 SwiftUI 视图的默认背景颜色?

Posted

技术标签:

【中文标题】覆盖 SwiftUI 视图的默认背景颜色?【英文标题】:Overwrite the default background color of SwiftUI Views? 【发布时间】:2020-02-09 22:57:45 【问题描述】:

在深色模式下,View 的标准背景颜色是纯黑色。虽然这在 iPhone X 上看起来确实不错,但在滚动或执行其他动画时确实会导致“OLED 拖尾”。根据特定的 UI,它可能看起来非常糟糕和明显:使用分组列表样式滚动列表,其中单元格具有不同的背景颜色,并且单元格在滚动时似乎缩小了。这很容易通过使用 050505 而不是纯黑色来解决(另请参阅 https://medium.com/lookup-design/designing-a-dark-theme-for-oled-iphones-e13cdfea7ffe 和 https://twitter.com/marcedwards/status/1053519077958803456?s=21 以了解 OLED 拖尾是什么)。

现在,我当然可以覆盖应用中每个视图的背景颜色,以使用自定义颜色值。但这有点糟糕,很容易忘记等等。那么,如何更改默认颜色?

编辑:我知道如何使用资产目录或不使用资产目录来制作自定义颜色,并为深色和浅色模式设置不同的值。那不是问题。问题具体是如何覆盖默认颜色。

【问题讨论】:

【参考方案1】:

我不确定是否有办法覆盖默认的暗模式颜色,但您可以配置一个自定义颜色集,其中一种颜色用于亮模式,然后另一种颜色用于暗模式。然后,您只需在整个应用程序中使用此颜色集名称,就像使用任何其他颜色名称一样。这并不能解决您提到需要记住使用这种颜色的问题,但它可能会更容易。

    在 Assets.xcassets 中,单击底部的 +,然后单击“新颜色集” 您可以为颜色命名 在属性检查器的“外观”中,选择“任何,深色” 然后您可以为每种颜色设置不同的颜色,然后使用第 2 步中的名称作为您应用中的颜色。

示例:我可以在我的应用程序中使用“BlackToWhite”作为我的颜色,在我这样做的任何地方,在浅色模式下它将是黑色,而在深色模式下它将是白色

【讨论】:

谢谢,但问题是关于如何覆盖默认颜色。我知道如何制作和使用新颜色:)

以上是关于覆盖 SwiftUI 视图的默认背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 如何模糊视图的默认背景颜色?

我可以在 SwiftUI 深色模式下覆盖黑色背景颜色吗?

在 SwiftUI 中更改 GroupBox 背景颜色

SwiftUI:如何使列表视图透明?如何更改列表视图背景颜色?

更改 SwiftUI 列表视图的背景颜色

为啥在 SwiftUI 中显示视图时 List 的背景颜色不同?