Переопределение NSSplitView dividerColor не работает для разделителя боковой панели в macOS 11

#swift #macos #appkit #nssplitview #macos-big-sur

#swift #macos #appkit #nssplitview #macos-big-sur

Вопрос:

У меня есть небольшое приложение, которое содержит NSSplitViewController с 3 вертикальными разделенными представлениями (боковая панель, просмотр содержимого, просмотр сведений), вроде почтового приложения. Я программно изменил цвет разделителя между различными разделенными представлениями, и это работало нормально до macOS 11.

К сожалению, после обновления проекта для поддержки macOS 11 разделитель между боковой панелью и представлением содержимого вернулся к цвету Apple по умолчанию как в светлой, так и в темной теме, и мое переопределение, похоже, больше не работает.

В настоящее время я просто создаю подкласс NSSplitView и переопределяю метод dividerColor, как описано в документации Apple

 // ... You can override this method to change the color of dividers.
@available(macOS 10.5, *)
@NSCopying open var dividerColor: NSColor { get }
  

Другой разделитель выглядит отлично, так как работает должным образом.

Есть какие-либо подсказки о том, как переопределить цвет разделителя боковой панели??

Заранее спасибо за любые предложения.

Ответ №1:

Вы можете попробовать использовать этот метод для самостоятельного рисования разделителя :

 func drawDivider(in rect: NSRect)
  

Из этого метода даже можно вызвать super, если по какой-то причине вам иногда нужен оригинальный дизайн.