Высота NSTextView с одной строкой?
Вопрос
Я хочу программно создать NSTextView.Как определить правильную высоту кадра, чтобы в представлении отображалась одна строка текста текущим шрифтом по умолчанию?
Решение
В классе NSFont есть метод, который может дать вам размер прямоугольника, в который будет заключена определенная строка с атрибутами.Получите шрифт, используемый вашим текстовым представлением, создайте строку, которая будет служить разумным примером того, что будет в текстовом представлении, и используйте ее для указания высоты вашего кадра.(Высота кадра должна быть на несколько пунктов больше, чем фактический прямоугольник, в котором будет отображаться строка.)
Альтернативно вы можете получить различные показатели шрифта и попытаться вычислить на их основе разумный кадр.Это может сработать, а может и не сработать;например, такой шрифт, как Apple Chancery, имеет огромное количество вариаций в зависимости от отображаемых глифов, их расположения в слове и т. д.;Я не знаю, сможете ли вы заранее рассчитать необходимый размер, не зная точно, что вы собираетесь визуализировать.
Другие советы
Было бы более нормально использовать NSTextField, чем NSTextView для одной строки текста.
С NSTextField просто сделайте следующее:
[textField setFont:myFont];
[textField sizeToFit];
Да, и нет встроенного «текущего шрифта по умолчанию».Если в приложении есть такое понятие, оно должно само его отслеживать.Панель шрифтов не читает и не записывает ничего глобального, она используется для работы с конкретными текстовыми объектами.