Цвет фона виджетов центра уведомлений Sierra

#macos #widget #macos-sierra

#macos #виджет #macos-sierra

Вопрос:

Центр уведомлений в Sierra имеет новый, светлый цвет фона по сравнению с Yosemite и El Cap. Однако мой виджет по-прежнему отображает старый темный стиль, даже когда я перестраиваю его с помощью нового SDK.

Для отображения установлено значение «Унаследованный (ярко-темный)». Изменение этого значения на «Aqua», похоже, не имеет никакого эффекта.

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

Ответ №1:

Вам необходимо установить значение NSExtensionPointVersion to 2.0 в вашем расширении Today Info.plist , чтобы получить новый внешний вид:

 <key>NSExtension</key>
<dict>
    <key>NSExtensionAttributes</key>
    <dict>
        <key>NSExtensionPointVersion</key>
        <string>2.0</string>
    </dict>
</dict>
  

В последний раз, когда я проверял, это нигде не было задокументировано, но если вы создаете новое расширение Today с помощью Xcode 8, оно должно добавить это для вас, подтвердив, что это правильный подход. (На самом деле я понял это, изучив содержимое собственных расширений Apple Today.)

Стоит упомянуть, что более старые версии macOS по-прежнему будут иметь темный внешний вид, поэтому, если ваше расширение обратно совместимо, вам нужно будет настроить содержимое в соответствии с цветом фона. В главном контроллере представления вашего расширения Today вы можете проверить, не выглядит ли он темным, например:

 NSString *appearance = self.parentViewController.view.effectiveAppearance.name;
BOOL legacyDarkBackground = ([appearance isEqualToString:NSAppearanceNameVibrantDark]);
  

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

1. Спасибо. Это работает. Но когда я создаю архив для отправки, я получаю сообщение об ошибке: «Сбой работы iTunes Store. Неверный ключ Info.plist. Недопустим ключ ‘NSExtensionPointVersion’ в bundle ***.appex «. Как это решить?