Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top