#xcode #cocoa #nsimage #nsimageview #macos-darkmode
Вопрос:
Я разрабатываю приложение для Mac Cocoa. И у меня есть набор изображений, которые нужно использовать как для светлого, так и для темного режимов.
Я следовал инструкциям здесь: https://developer.apple.com/documentation/uikit/uiimage/providing_images_for_different_appearances
В viewWillLayout()
, я настроил изображение для представления примерно так:
nsImgaeView.image = NSImage(named: "Image") // Does not change after toggling light/dark mode
Но NSImage(named: "Image")
просто не меняет свой внешний вид после того, как я переключил режим «свет/темнота» в системных настройках.
Я уверен, что код был вызван, потому что:
nsImgaeView.image = NSImage(named: "Another_Image") // Changes to another image after toggling
Перезапуск приложения действительно приводит к изменению его внешнего вида. Я думаю, это потому, что система кэширует изображение после начальной загрузки?
Комментарии:
1. Скорее всего, вы использовали CGLayer и не обновили его правильным изображением. В вашем коде мало что говорится о «someView.image». Если это NSImageView, он будет работать. Если вы визуализируете изображение вручную -> проверьте наличие проблем там
2. Да, someView относится к типу
NSImageView
3. Проверьте свое изображение в каталоге активов.