2016-10-06 6 views
0

У меня есть NSFont, размер, семейство, черты которого я бы хотел изменить.Идиоматический способ изменения NSFont

я обнаружил, что я могу использовать NSFontManager сделать это (используя, например, convertFont:toFamily или convertFont:toSize), но я подозревал, что будет какая-то возможность изменить все сразу (я представлял себе что-то вроде convertFont:toFamily:toSize:toHaveTrait). Тем не менее, я не нашел такой вещи, поэтому я сейчас делаю ступенчатую трансформацию.

Еще одна вещь, которую я рассмотрел, - это использование NSFontDescriptor. Однако использование этого кажется немного громоздким, если я уже начинаю с NSFont (NSFont -> NSFontDescriptor -> modified NSFontDescriptor -> modified NSFont выглядит более подробным для меня, чем NSFont -> converted NSFont).

Итак, существует идеоматический способ преобразования NSFont s? И если да, то что это?

ответ

1

Дескрипторы шрифтов - это обычный способ приблизиться к этому. См. Using Fonts with Text Kit от WWDC 2013, начиная примерно с 26:00 (этот разговор посвящен UIKit, но многие из них применимы и к AppKit). NSFontManager предназначен для работы с интерактивным пользовательским интерфейсом выбора шрифтов (в частности, панель шрифтов). Если вы взаимодействуете с выбранным пользователем шрифтом (в стиле пользовательского интерфейса), вы обязательно должны использовать NSFontManager, но в большинстве случаев вы изменяете все по частям, когда пользователь выбирает и отбирает различные параметры. Если вы манипулируете шрифтами независимо от пользователя, вы, вероятно, захотите использовать дескрипторы шрифтов, тем более что вы не будете непреднамеренно изменять панель шрифтов.