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

时间:2020-02-09 22:57:45

标签: swift swiftui

在暗模式下,View的标准背景颜色是纯黑色。例如,虽然在iPhone X上看起来确实不错,但在滚动或执行其他动画时确实会导致“ OLED污迹”。根据特定的UI,它看起来确实很糟糕并且很明显:使用分组列表样式滚动列表,其中单元格具有不同的背景颜色,并且单元格在滚动时似乎会收缩。通过使用050505代替纯黑色,可以很容易地解决此问题(另请参见https://medium.com/lookup-design/designing-a-dark-theme-for-oled-iphones-e13cdfea7ffehttps://twitter.com/marcedwards/status/1053519077958803456?s=21,以了解OLED涂抹的含义)。

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

编辑:我知道如何使用资产目录或不使用资产目录来创建自定义颜色,并在暗和亮模式下使用不同的值。那不是问题。问题特别是如何覆盖默认颜色。

1 个答案:

答案 0 :(得分:-1)

我不确定是否有办法覆盖默认的深色模式颜色,但是您可以配置一个自定义颜色集,该颜色集在浅色模式下为一种颜色,然后在深色模式下为另一种颜色。然后,您将像在所有其他颜色名称中一样,在整个应用程序中使用该颜色集名称。这并不能解决您提到要记住使用这种颜色的问题,但可以使它变得更容易。

  1. 在Assets.xcassets中,单击底部的+,然后单击“新颜色集”
  2. 您可以给颜色起一个名字
  3. 在属性检查器的“外观”中,选择“任意,黑暗”
  4. 然后可以为每种颜色设置不同的颜色,然后将步骤2中的名称用作应用程序中的颜色。

示例:我可以在应用中使用“ BlackToWhite”作为我的颜色,并且在执行此操作的任何地方,在浅色模式下它将是黑色,而在深色模式下它将是白色

Example: I can use "BlackToWhite" as my color within my app, and anywhere I've done this, in light mode it will be black, and in dark mode it will be white