Во Flex как настроить размер шрифта, чтобы выровнять ярлык по значку? - PullRequest
3 голосов
/ 09 ноября 2010

Я создаю небольшой компонент Flex UI, который отображает цветной квадрат рядом с меткой текста.Я хочу иметь возможность указать размер для квадрата и внутренне настроить свойства метки так, чтобы высота линии соответствовала квадрату, а текст располагался по центру по вертикали относительно квадрата.

В настоящий момент я 'м, используя mx.controls.Label для текста.Установка стиля fontSize для размера квадрата не работает, метка становится слишком большой.Проследив несколько значений в отладчике, я обнаружил, что

  • высота строки внутреннего текстового поля (сумма свойств ascent и descent объекта TextFieldMetrics, полученных с помощьюgetTextFieldMetircs()), кажется, в конечном итоге составляет около 120% от того, что я указываю в качестве размера шрифта.
  • есть «ведущий» по умолчанию 2 пикселя, который я не могу изменить напрямую на уровне Label, это добавляет кобщая высота внутреннего текстового поля (getTextFieldMetrics().height)
  • высота компонента Label увеличивается на 5 пикселей, я не знаю, откуда они взялись.

Мое текущее решение состоит в том, чтобы установить размер шрифта на Math.round((iconSize - 2) / 1.2), но пока это работает нормально, это кажется неудовлетворительным.Есть ли более надежный и простой подход к этому?

1 Ответ

0 голосов
/ 12 ноября 2010

Тем временем я немного поэкспериментировал с использованием UITextField вместо Label, и это привело меня к интересному наблюдению: оба компонента, похоже, выполняют некоторое внутреннее масштабирование и изменение размера в зависимости от размера шрифта, так чтовизуализированный текст всегда будет иметь отступы вокруг него.Числа, возвращаемые из getTextLineMetrics(), различаются для одного и того же размера шрифта при использовании любого из компонентов.

UITextField отображает текст так, что общая высота пикселя компонента соответствует числу, указанному как fontSize,что, в свою очередь, делает фактический текст немного меньше (около 2-4 пикселей).Кроме того, кажется, что игнорируется, когда вы устанавливаете leading в ноль.

Label соответствует полученной высоте строки так, как было указано как fontSize, делая компонент больше этого (примерно на 5 пикселей)).

Хотя это, безусловно, сбивает меня с толку, я удовлетворен использованием компонента Label и его размещением таким образом, чтобы лишние пробелы сверху и снизу обрезались родительским компонентом и не имели значениябольше.Текст тогда имеет правильный размер.Я центрируюсь по вертикали, что легко, но также будет полезно использовать числа от getTextLineMetrics() для более сложного позиционирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...