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

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

25.08.2008 04:19:25
2 ОТВЕТА
РЕШЕНИЕ

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

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

4
25.08.2008 05:00:04

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

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

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

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

2
18.09.2008 07:26:57
Есть системный шрифт, который может быть тем, что он имел в виду.
Peter Hosey 17.09.2009 15:57:20