Mac OS в темном режиме

Я получил эту ошибку от Apple во время публикации моего приложения. Как я могу решить эту проблему? Мы обнаружили, что когда включен темный режим, дополнительные значки в строке меню не видны. Я не могу найти в Интернете ничего для определения темного режима ...

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


person Community    schedule 08.10.2018    source источник
comment
Пожалуйста, добавьте свой код в виде текста, а не изображения   -  person Paulw11    schedule 08.10.2018
comment
Кажется, у вас есть темные значки в темной области вашего актива. Они не будут видны в темном режиме. Вам нужны светлые изображения для темного режима   -  person Paulw11    schedule 08.10.2018
comment
@ Paulw11 хорошо, я вошел в них. теперь на уровне кода, что мне делать?   -  person    schedule 08.10.2018
comment
Ничего такого. Система автоматически подбирает подходящий внешний вид. developer.apple.com/documentation/appkit/images_and_pdf/   -  person Paulw11    schedule 08.10.2018
comment
Вы имеете в виду ошибку Apple, но не упомянули о какой именно. Кроме того, мне кажется странным, что ваш Xcode находится в светлом режиме, а в редакторе темная схема. Вы используете macOS 10.13? В таком случае цвета и изображения в темном режиме работать не будут!   -  person DarkDust    schedule 06.12.2018


Ответы (1)


Я вижу термин cache в вашем коде и делаю некоторые предположения:

Похоже, вы загружаете изображения, затем манипулируете ими и сохраняете обработанные изображения для последующего использования. Вам необходимо позаботиться о нескольких вещах:

Прежде всего, убедитесь, что текущий внешний вид установлен правильно, когда вы выполняете загрузку / изменение изображения. Помимо drawRect: и некоторых других методов, вам всегда нужно танцевать примерно так:

NSAppearance * savedAppearance = [NSAppearance currentAppearance];
[NSAppearance setCurrentAppearance:someView.effectiveAppearance];

// Do your image/color/drawing stuff.

[NSAppearance setCurrentAppearance:savedAppearance];

Имейте в виду, что внешний вид ограничен определенным видом! Вы можете иметь разный вид в одной и той же иерархии представлений.

Вам нужно либо переопределить viewDidChangeEffectiveAppearance вашего NSView, либо KVObserve effectiveAppearance представления, чтобы получать уведомления об изменениях внешнего вида и реагировать соответствующим образом (воссоздавать свои значки).

person DarkDust    schedule 06.12.2018