Проблема с 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).

Другие вопросы по тегам