iOS 13中启动画面的深色模式

66
我已将我的 iOS 应用程序更新为在 iOS 13 上支持深色模式,但我在尝试使启动屏幕看起来好看时遇到了问题。
目前,它是一个亮白色的屏幕,并带有应用程序标志,在深色模式下看起来很糟糕。我尝试将启动屏幕的背景颜色设置为我使用 "任何外观" 是白色和 "深色外观" 是黑色的颜色资源 - 但启动屏幕仍然始终显示为白色。
是否有任何方法可以让我的启动屏幕在深色模式下正常工作?

2
使用 systemBackgroundColor 作为背景颜色。无需自己创建颜色资源。 - rmaddy
那个可行!如果你想将它发布为答案,我可以接受它。 - Quinn
@rmaddy 你知道这个会不会在iOS 12及以下版本上崩溃吗? - Ivan Ičin
1
@IvanIčin 它不应该崩溃。如果您支持iOS 12或更低版本,Xcode似乎会在故事板中设置等效的浅色模式颜色。尝试一下并确保它。 - rmaddy
5个回答

61

在设置启动画面故事板时,将视图的“背景”颜色设置为“系统背景颜色”。这将在浅色模式下为白色,在深色模式下为黑色。不需要使用自己的颜色资源。


13
如果我想在系统处于明亮模式时覆盖用户界面样式为暗色,或在系统处于暗色模式时覆盖其为浅色,该如何实现?Storyboard将始终遵循系统背景颜色,因此不会很流畅。 - Weslie
2
实际上我知道这个问题,并且我已经成功地通过编程进行了更改。问题的关键在于我想要为LaunchScreen进行更改,就像在这个主题中所描述的那样。例如,当系统处于暗模式时,我可以将当前窗口覆盖为亮色,但是LaunchScreen仍然保持暗色。 - Weslie
4
这不太好,我的应用程序在亮色模式下使用彩色背景,在暗色模式下使用黑色。 - Pedro Paulo Amorim
2
仅限于 iOS 11 之前版本,也命名的颜色是唯一可用的。 - Pedro Paulo Amorim
5
我认为假设启动屏只能是白色或黑色并不正确。我通过使用动态图像资源来设置背景和标志解决了我的问题。 - Yusuf Kamil AK
显示剩余8条评论

25

我找到了一个解决方案,可以支持早期版本的iOS,并且可以针对iOS 13中的每种模式(深色和浅色)使用自定义颜色。

  1. 创建一个图像资源,将Appearances设置为Any、Light、Dark,并加载您想要的颜色的小型实心png。在这种情况下,我使用橙色表示浅色,黑色表示深色。

图像资源

  1. 进入你的LanuchScreen.storyboard并添加一个带有该图像资源的图像视图。将图像放置在你的图片标志之后,将Content Mode设置为Aspect Fill,并将视图限制在所有边缘的Superview上。(确保你的标志与两个背景都很好看,或者也可以设置其Appearance)

  2. 这就是我必须做的技巧。由于某种原因,我无法使背景图片显示出来。在检查了一些在启动屏幕故事板不显示图像中的评论后,我将第一个图像添加到目标束中。

颜色在旧版本的iOS中是静态的,并且在iOS 13的深色和浅色模式下都可以正常工作。


谢谢!这实际上是我情况下最好的解决方案。我支持iOS11之前的旧版本,同时我还有自定义背景颜色。 - fisher
2
谢谢。重新启动模拟器解决了启动屏幕无法显示任何图像的问题。 - mazend
1
谢谢!我按照您的所有步骤操作,最终重新启动了模拟器,然后它就正常工作了。 - john raja

16

我正在更新我的应用程序以支持iOS 13的新暗模式,我在我的LanuchScreen.storyboard中为View的背景设置了“System Background Color”,但令人惊讶的是它没有起作用!

页面上的Logo图像根据浅色/深色模式正确变化,但背景没有变化

我本来打算使用Jose的解决方案,但在此之前,我决定完全删除设备上的应用并重试。然后它成功了!


16

我在Xcode的默认颜色调色板中缺少颜色,因此我使用Color.xcassets创建了自己的颜色,其中我创建了一个包含外观Any, Dark的自定义颜色集,并设置了我的颜色。

enter image description here

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

enter image description here


1
请注意,名称颜色属性仅支持iOS 11.0及以上版本。 - Manikandan
1
对于较低版本,请使用UIImageView和1px图像来处理暗色和亮色样式。 - Pedro Paulo Amorim
这些图片是jpg或png格式的,而不是实际的UIColor吗?编辑:算了,我看到你可以在xcassets中添加颜色集。 - David Chopin
注意:我必须完全重新启动我的设备才能使其生效! - Micheal C Wallas
注意:像 @MichealCWallas 一样,您需要删除应用程序,重新启动模拟器,甚至在新的模拟器中执行才能看到更改! - Alessandro Pace

8

启动画面可以在深色模式下使用,首先检查“xyz”图像的背景颜色是否正确。如果一切正常,只需从设备或模拟器中删除您的应用程序,因为有时候启动画面会被设备或模拟器缓存,并且您将无法在其上获取更新的UI。如果您遇到相同的问题,请follow我的示例应用github.com/Indolia/darkmode.git。


3
没有重新启动模拟器,其他答案都没有用。谢谢。 - Brett
1
对我来说也是一样,删除应用程序没有任何作用,但重新启动模拟器可以解决问题。 - Vanessa Forney
我刚在新模拟器上运行了这个应用程序,一切都像魔法般地正常工作!谢谢。 - Faisal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接