【问题标题】:Custom elevated background color for iOS dark modeiOS暗模式的自定义提升背景颜色
【发布时间】:2021-09-18 03:31:05
【问题描述】:

dark mode section of the Human Interface Guidelines 中,Apple 描述了当您使用系统背景时,基本上存在三种背景颜色 - 浅色、深色和深色提升(例如,用于模态)。

有什么方法可以将这种提升的样式用于自定义颜色?我的资产文件中有一个自定义背景颜色,其中包括明暗模式,但对于提升的内容,它仍将使用暗模式颜色。

【问题讨论】:

  • 您可以创建自定义颜色,该颜色具有特定值的深色 + 高光。您只是不能通过资产目录来完成,因为 Xcode 不提供 UI 来设置值。有关详细信息,请参阅this question

标签: ios colors background-color ios-darkmode


【解决方案1】:

首先,您不能使用提升样式。它是为系统功能保留的,例如当您进入多任务菜单或打开模式视图时。

Apple HIG 声明

深色模式是动态的,这意味着背景颜色自动从基础颜色变为高光...

强调“自动”,并且

使用自定义背景颜色会使人们更难感知这些系统提供的视觉区别

所以我相信,使用自定义颜色不会动态地将提升的样式应用于您的背景。你现在只能在swift中使用Lightdark

【讨论】:

  • 这不能回答问题,也不是真的。鼓励让系统处理事情,但自己做是合法的。您可以创建一个UITraitCollection,并将userInterfaceLevel 设置为.elevated。然后,您可以通过调用其父级的setOverrideTraitCollection(_:forChild:) 使特定视图控制器看起来提升。或者,对于演示,获取UIPresentationController 并设置其overrideTraitCollection
  • 知道接口级别是UITraitCollection的一部分非常有趣,我不知道。我认为这意味着级别更改也会调用traitCollectionDidChange?我们将不得不考虑是否可以以某种方式扩展我们当前的背景颜色资源(现在由 swiftgen 自动生成)。
猜你喜欢
  • 2021-12-04
  • 2011-03-06
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 2020-01-29
  • 2011-09-12
  • 2021-09-13
  • 1970-01-01
相关资源
最近更新 更多