Светлый и темный режим в swift

#swift

#swift #светлый #ios -темный режим

Вопрос:

Я создал ресурсы изображений для темного и светлого режимов под названием 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)
}
 

Комментарии:

1.Вы пробовали просто UIImage(named: "image") без всего, что касается ресурсов изображения? UIImage это умный класс.

2. Да, я попробовал UIImage (с именем: «image»), но он не находит правильное изображение в темном или светлом режиме.

3. Можете ли вы показать скриншот вашего каталога активов? Это сработало на моем Mac…

Ответ №1:

let image = UIImage(named: "image") обычно это все, что требуется, если вы правильно настроили свой ресурс. Убедитесь, что для параметра «Внешний вид» установлено значение «Любой, темный», затем добавьте свои изображения в соответствующие ячейки:

введите описание изображения здесь

Ответ №2:

Узнайте текущий используемый темный / светлый режим с помощью:

 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 с расширением:

 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)