快速的明暗模式

时间:2020-05-23 13:35:33

标签: swift light ios-darkmode

我为暗光模式创建了名为myImage的图像资产。将图像资产的外观设置为“暗”。

即使模式为亮或暗,此代码也无法获得相同的图像。

如何获取代码以根据亮或暗模式选择正确的图像?

感谢您的帮助。

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

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

2 个答案:

答案 0 :(得分:1)

如果正确设置资产,通常只需要

let image = UIImage(named: "image")。确保将“外观”设置为“任意,黑暗”,然后将图像添加到适当的位置:

enter image description here

答案 1 :(得分:0)

使用以下命令找出当前使用的暗/亮模式:

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

然后,我将访问具有不同名称的明/暗图像:UIImage :(名为:“ myImageLightMode”)和UIImage :(名为:“ 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的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)