2015-10-15 2 views
6

Я хотел бы выровнять начало текста двух UILabel s. Я выровнял два UILabel s (с желтым и серым фоном) и использовал sizeToFit:, чтобы сжать UILabel s к содержанию, но текст не совсем выровнен по левому краю. Слева слева. Зазор больше или меньше в зависимости от первого символа. Я хотел бы выровнять красные линии на следующем рисунке. Существует даже небольшой разрыв с маленьким шрифтом в сером UILabel, но он едва заметен.Выровнять два текста UILabel

enter image description here

С Z характер разрыв меньше, но по-прежнему виден в желтой области слева в Z

enter image description here

Простой UILabel выравнивание не поможет моей конкретной проблемы, потому что текстовое содержимое является динамическим, а не статическим. Таким образом, может быть любая комбинация в зависимости от данных, которые я получаю от бэкэнд. Поэтому я надеялся на атрибут UIFont или UILabel, который мог бы вернуть размер пробела на основе текущего рендеринга текста.

Я знаю, что есть большие UIFont связанные атрибуты, такие как baseline, capHeight и ascender можно получить доступ, чтобы выровнять текст, но там, кажется, нет атрибута, который будет возвращать значение этого разрыва слева.

+0

Вы пробовали мое решение? Любые комментарии? –

+0

Я удалил 'sizeToFit' в свой код и использовал фиксированные размеры меток только для устранения возможной проблемы с корнем' sizeToFit'. Я сделал «UILabel» более широким, чтобы исключить правильное предположение о выравнивании. Это все та же проблема. Это должен быть рендеринг шрифта. –

ответ

0

Выберите обе метки и добавьте ограничение, которое называется align leading edges. enter image description here

0

Использование приписывали текст UILabel

множества отступа в соответствии с экрана реф требование выстрелил

enter image description here

0

Если это не нужно быть два UILabels, вы могли бы иметь один с приписано текст. Тогда обе линии будут обладать одинаковой компоновкой.

+0

Ваше решение звучало многообещающе, и я попробовал его. К сожалению, он делает то же самое с одним 'UILabel', как с двумя' UILabel'. Я использовал '\ n', чтобы добавить разрыв строки в' NSAttributedString' и добавил 'NSFontAttributeName' для стилизации шрифта. Аналогичные левые пробелы появляются как с двумя отдельными 'UILabel's –

+0

. Тогда это, вероятно, некоторое свойство шрифта. Вам, вероятно, придется попасть в отдельные глифы и основной текст. Гораздо более низкий уровень. –

0

Я не пробовал графический интерфейс, который люди публиковали с экрана, однако ... поведение соответствует самой природе типографики.

Размеры шрифта совершенно разные, поэтому ширина em различна, в результате расстояние между буквами также отличается.

Для получения дополнительной информации см. http://www.w3.org/WAI/GL/css2em.htm.

Я знаю, что этот ответ не дает вам то, о чем вы просили, однако он должен объяснить, почему это происходит.

Для настройки, такой как это (если HTML и CSS), я бы использовал отрицательный/положительный запас на субтекст, однако, видя, что вы используете фон, используйте дополнение (или эквивалент в вашем графическом интерфейсе).

+0

Спасибо за ваш комментарий. Я думаю, вы правы, что это поведение - обычная типография шрифта. Я использовал разные шрифты, чтобы увидеть, является ли шрифт, который я использовал, источником, если это поведение. Но другие шрифты также генерируют этот левый пробел. –

+0

Недавно я столкнулся с этой проблемой на микросайте, который я создал для моей сетки: http://interiorsystem.co.uk - посмотрите на самую верхнюю область оранжевого фона. Это показывают две строки текста. Я должен был использовать маржу, чтобы выровнять их. –

+0

Выглядит неплохо. Если у вас есть фиксированный текст и ничего динамичного, это, безусловно, самое простое решение. В моем случае, однако, у меня есть полные динамические тексты, и фиксированный запас не решает его для всех возможных комбинаций. –

Смежные вопросы