#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)