【问题标题】:Dark mode launch screen in iOS 13iOS 13 中的暗模式启动屏幕
【发布时间】:2019-11-15 10:31:18
【问题描述】:

我已将我的 iOS 应用更新为在 iOS 13 上以暗模式运行,但我无法让启动屏幕看起来不错。

目前它是一个带有应用程序徽标的亮白色屏幕,在黑暗模式下看起来很糟糕。我尝试将启动屏幕的背景颜色设置为我制作的颜色资产,其中“任何外观”为白色,“深色外观”为黑色 - 但启动屏幕仍始终显示为白色。

有什么方法可以让我的启动屏幕在黑暗模式下正常工作?

【问题讨论】:

  • 使用systemBackgroundColor 作为背景颜色。无需您自己的颜色资产。
  • 成功了!如果您想将其发布为答案,我可以接受。
  • @rmaddy 你知道这是否会使 iOS 12 及更低版本的应用程序崩溃?
  • @IvanIčin 它不应该崩溃。如果您支持 iOS 12 或更低版本,Xcode 似乎会在情节提要中设置等效的灯光模式颜色。试试看,然后确定。

标签: ios storyboard ios13


【解决方案1】:

设置启动屏幕故事板时,将视图“背景”颜色设置为“系统背景颜色”。这将在亮模式下为白色,在暗模式下为黑色。无需使用您自己的颜色资源。

【讨论】:

  • 但是,如果我想在系统浅色模式下将用户界面样式覆盖为深色,或者在系统处于深色模式时将其覆盖为浅色。我该如何实施?故事板将始终遵循系统背景颜色,因此不会流畅。
  • 实际上我知道,并且我已经成功地以编程方式进行了更改。问题的关键是我想为LaunchScreen 更改它,如本主题中所述。例如,当系统黑暗时,我可以将当​​前窗口覆盖为亮,但 LaunchScreen 仍然保持黑暗。
  • 这不太好,我的应用使用彩色背景作为亮色,黑色作为暗色模式。
  • 也称为颜色仅在 iOS 11 之前可用。
  • 在我看来,假设启动屏幕只能是白色或黑色不是正确的方法。我已经通过对背景和徽标使用动态图像资源解决了我的问题。
【解决方案2】:

我找到了一个解决方案,它支持早期的 iO​​S 版本以及 iOS 13 中每种模式(深色和浅色)的自定义颜色。

  1. 创建图像资源,将外观设置为任意、浅色、深色,然后加载具有所需颜色的小实心 png。在这种情况下,我使用橙色表示浅色,黑色表示深色。

  1. 转到您的 LanuchScreen.storyboard 并使用该图像资产添加图像视图。将图像放在图像徽标后面,将内容模式设置为 Aspect Fill,并将视图限制在所有侧面的 Superview 上。 (确保您的徽标在两种背景下看起来都很好,或者也设置它的外观)

  2. 这是我不得不做的一个技巧。由于某种原因,我无法显示背面图像。在检查了Launch Screen storyboard not displaying image 中的一些 cmets 后,我将图像资源中的第一个图像添加到目标包中

在旧版本的 iOS 中颜色是静态的,它适用于 iOS 13 中的深色和浅色模式。

【讨论】:

  • 谢谢!这实际上是我的情况的最佳解决方案。我支持比 iOS11 更旧的版本,而且我还有自定义背景颜色。
  • 谢谢。重新启动我的模拟器修复了.. LaunchScreen 没有显示任何图像的错误。
  • 谢谢!我按照您的所有步骤操作,最后我重新启动了我的模拟器,然后它就可以工作了。
【解决方案3】:

我正在更新我的应用程序以支持 iOS 13 的新暗模式,我在 LanuchScreen.storyboard 中为视图的背景添加了“系统背景颜色”,但令人惊讶的是没用!

页面上的徽标图像根据亮/暗模式正确更改,但不是背景!

我正准备应用 Jose 的解决方案,但在此之前,我决定从我的设备中完全删除该应用并重试。它奏效了!!

【讨论】:

    【解决方案4】:

    我在 Xcode 默认提供的颜色中缺少我的调色板中的颜色,因此我使用 Color.xcassets 创建了我自己的颜色,在那里我创建了带有外观 Any, Dark 的自定义颜色集并设置了我的颜色。

    然后我可以在自动布局中使用它们,就像在 LaunchScreen 中一样使用系统颜色

    【讨论】:

    • 请注意,只有 iOS 11.0 支持名称颜色属性
    • 对于较低的版本,使用 UIImageView 和 1px 图像作为深色和浅色样式。
    • 这些图像是 jpg 还是 png,而不是实际的 UIColors?编辑:没关系,我看到您可以在 xcassets 中添加颜色集。
    • 注意:我必须完全重启我的设备才能生效!
    【解决方案5】:

    是的,启动屏幕在暗模式下工作,首先检查“xyz”图像的背景颜色。如果可以的话。只需从设备或模拟器中删除您的应用程序,因为有时设备或模拟器会缓存启动屏幕,您将无法在其上获得更新 UI。如果您将面临同样的问题,请按照我的演示应用程序 github.com/Indolia/darkmode.git

    【讨论】:

    • 如果不重新启动模拟器,其他答案均无效。谢谢。
    • 对我来说也一样,删除应用程序没有做任何事情,但重新启动模拟器有效。
    • 我刚刚在一个新的模拟器上运行了这个应用程序,一切都像一个魅力!谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-07-22
    • 2020-04-22
    • 1970-01-01
    • 2020-01-18
    • 2020-02-26
    • 1970-01-01
    • 2020-02-04
    • 2019-12-03
    相关资源
    最近更新 更多