如何为 iOS 设置包中的滑块指定暗/亮模式图像?

Posted

技术标签:

【中文标题】如何为 iOS 设置包中的滑块指定暗/亮模式图像?【英文标题】:How can I specify dark/light mode images for a slider in an iOS settings bundle? 【发布时间】:2019-12-03 00:58:03 【问题描述】:

我的设置包中有一个滑块,使用 PSSliderSpecifier 类型。我使用MinimumValueImageMaximumValueImage 键来提供显示在滑块左/右的图像。但是,如下面的屏幕截图所示,这些图像不会根据明暗模式进行调整。

如何在明暗模式下指定要使用的不同图像或不同的色调? Apple 设置中的所有滑块似乎都会根据模式进行调整,所以感觉应该有办法,但我没有看到任何关于如何实现这一点的文档。

灯光模式

黑暗模式

【问题讨论】:

可以在资产目录中使用图片吗?然后也许将渲染模式设置为“模板图像”会起作用。 是的,这是个好主意。我尝试在我的主应用程序包中引用一个资产目录,以及一个嵌入在设置包本身中的资产目录。我尝试了许多不同的看似合乎逻辑的方法来引用这些图像,但似乎都没有奏效。我从资产目录中显示图像的唯一方法是直接指定图像文件本身的路径(例如,SettingsImages.xcassets/Slow.imageset/Turtle.png),它忽略了整个资产目录元数据本身,所以它实际上并不完成任何事情。 =( 哦,很有趣...鉴于 ios 13 的所有缺点,如果他们忘记了这些图像,我不会感到惊讶... 开始这么想了。浏览我手机上的应用程序,似乎很少有人使用它们。 也许有像@2x~ipad 这样适用于暗模式的神奇文件前缀?虽然找不到... 【参考方案1】:

好吧。首先你可以检测暗模式

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 
    if traitCollection.userInterfaceStyle == .light 
        print("Light mode")
     else 
        print("Dark mode")
    

您可以使用他的属性自定义滑块

 slider.minimumTrackTintColor = .green
 slider.maximumTrackTintColor = .red
 slider.thumbTintColor = .black

当您检测到任何用户界面样式时,您可以更改音量图标

【讨论】:

很抱歉,如果不清楚,但这是用于设置包中的滑块。因此,出现在“设置”应用中的设置。我无法在该上下文中运行任何代码。

以上是关于如何为 iOS 设置包中的滑块指定暗/亮模式图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 wkwebview 使用 iOS 13 暗模式

以编程方式检测 SwiftUI 中的暗模式以显示适当的图像

如何根据暗/亮模式设置默认标签颜色(在 Swift 中)

PKD为暗模式和亮模式绘制不同的结果

iOS 13 中的暗模式启动屏幕

如何以编程方式设置控制图像视图宽度的滑块