Сведения о вопросе

Fedya

14:00, 22nd August, 2020

Теги

cocoa   macos    

Высота NSTextView с одной строкой?

Просмотров: 316   Ответов: 2

Я хочу программно создать NSTextView. Как я могу определить правильную высоту кадра, чтобы представление отображало одну строку текста в текущем шрифте по умолчанию?



  Сведения об ответе

PAGE

10:18, 17th August, 2020

Класс NSFont имеет метод, который может дать вам размер прямоугольника, который будет заключать определенную строку атрибутов. Получите шрифт, используемый вашим текстовым представлением, создайте строку, которая служит разумным примером того, что будет в текстовом представлении, и используйте ее для определения высоты кадра. (Высота кадра должна быть на некоторое количество точек больше, чем фактический прямоугольник, в котором будет отображаться строка.)

Кроме того, вы можете получить различные метрики от шрифта и попытаться вычислить разумный кадр из этого. Это может сработать, а может и не сработать; например, такой шрифт, как Apple Chancery, имеет огромное количество вариаций в зависимости от того, какие глифы визуализируются, где они находятся в слове и т. д.; Я не знаю, что вы можете заранее рассчитать необходимый размер, не зная точно, что вы собираетесь визуализировать.


  Сведения об ответе

screen

11:12, 20th August, 2020

Было бы более нормально использовать NSTextField, чем NSTextView для одной строки текста.

С NSTextField просто сделайте следующее:

[textField setFont:myFont];
[textField sizeToFit];

О, и нет встроенного "текущего шрифта по умолчанию". Если приложение имеет такую концепцию, оно должно отслеживать ее само. Панель шрифтов не читает и не записывает ничего глобального, она используется для работы с определенными текстовыми объектами.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться