Проблема с NSFontPanel
У меня есть приложение, в котором мне нужно изменить стиль (шрифт, размер, полужирный, задний и передний цвета,...). Как я могу загрузить начальный стиль в FontPanel и получить новые атрибуты после проверки пользователя?
Я пробовал много разных вещей, но безуспешно.
Спасибо
1 ответ
Использовать setPanelFont:isMultiple:
установить изначально выбранный шрифт.
использование [NSFontManager sharedFontManager] setSelectedAttributes:isMultiple:
изменить изначально цвета; ключи словаря NSForegroundColorAttributeName
а также @"NSDocumentBackgroundColor"
для цветов и NSUnderlineStyleAttributeName
а также NSStrikethroughStyleAttributeName
для стилей.
Когда шрифт изменяет changeFont:
метод экземпляра делегата будет вызван.
То же самое стили: changeAttributes:
метод. И цвета текста и документов: setColor:forAttribute:
метод.
Чтобы получить новые атрибуты в методе changeAttributes:
NSDictionary * newAttributes = [sender convertAttributes:@{}];
Swift 4.2:
NSFontPanel.shared.setPanelFont(myNSFont, isMultiple: false)
NSFontManager.shared.setSelectedAttributes([NSAttributedString.Key.foregroundColor.rawValue: myNSColor], isMultiple: false)
Вы можете найти список всех ключей атрибутов здесь - старые константы типа не рекомендуются, но по состоянию на 10.13, больше не работают.
Чтобы получать уведомления об изменениях, если вы хотите изменить, скажем, содержимое метки, к которой не прикреплен редактор полей, вам необходимо установить цель и действие NSFontManager.shared и зарегистрироваться для NSColorPanel.colorDidChangeNotification (NSColorChanging не запускается когда ColorPanel открывается из FontPanel).