swift 中的明暗模式

Light and dark mode in swift

我为称为 myImage 的暗模式和亮模式创建了图像资源。将图像资产外观设置为任意、深色。

即使模式是亮或暗,此代码得到相同图像的问题。

如何根据浅色或深色模式获取 select 正确图像的代码?

感谢您的帮助。

let image = UIImage(named: "image")
let asset = image?.imageAsset
let resolvedImage =    asset?.image(with: traitCollection)

If let image = resolvedImage {
  myButton.setImage(image, for:     .normal)
}

找出当前使用的 dark/light 模式:

if traitCollection.userInterfaceStyle == .light {
    print("Light mode")
} else {
    print("Dark mode")
}

然后我将访问具有不同名称的 light/dark 图像:UIImage:(named: "myImageLightMode") 和 UIImage:(named: "myImageDarkMode")

请记住,当您不想以不同的颜色创建每个图标时,您可以将按钮图像等图像着色为所需的颜色,如下所示:

if let originalImage = UIImage(named: "yourButtonImage") {
    let tintedImage = originalImage.withRenderingMode(.alwaysTemplate)
    customButton.setImage(tintedImage, for: .normal)
    customButton.tintColor = UIColor.red
} else {
    print("Image not found.")
}

可以在 UIImageView 上使用扩展名完成相同的操作:

extension UIImageView {
    func setImageAndColor(image: UIImage, color: UIColor) {
        let templateImage = image.withRenderingMode(.alwaysTemplate)
        self.image = templateImage
        self.tintColor = color
    }
}

通过以下方式访问:

let imageView = UIImageView()
imageView.setImageAndColor(image: UIImage(named: "yourImage"), color: .red)

let image = UIImage(named: "image") 通常是所需要的,如果您正确设置您的资产。确保将 "Appearances" 设置为 "Any, Dark",然后将图像添加到适当的位置: