Отрегулируйте шрифт UILabel так, чтобы текст соответствовал границам метки.

Мой контроллер представления имеет UILabel. Он отображает сумму в долларах для пользователя. У меня есть размер по умолчанию, в котором мне нравится отображать сумму в долларах, как показано ниже.

хорошо

Когда сумма слишком велика, часть текста заменяется на "..."

плохо

Я хочу настроить текст UILabel (сделать его меньше), чтобы размер текста в точках был достаточным, чтобы точки не появлялись. Есть ли какая-то быстрая математика, которую я могу сделать, чтобы выполнить это?


person JuJoDi    schedule 13.03.2014    source источник
comment
Почему бы вам не использовать метод sizeToFit для UILabel, чтобы он изменял размер и подходил.   -  person Sandeep    schedule 14.03.2014


Ответы (3)


Вам не нужно заниматься математикой, предоставляемый системой API может сделать это за вас. В Interface Builder установите для автоматического сжатия метки минимальный масштабный коэффициент 0,7 (или любое другое значение, которое вам подходит). Текст теперь будет уменьшаться по мере необходимости.

введите здесь описание изображения

person Leo Natan    schedule 13.03.2014

Использовать это:

UILabel * label = // your label

// update from @rmaddy and @z s
label.adjustsFontSizeToFitWidth = YES;
label.minimumScaleFactor = 0.5;

Это означает, что вы позволите вашему тексту уменьшиться до половины его размера перед усечением. Отрегулируйте соответственно.

Если вы работаете в среде до iOS 7, вы также можете использовать:

UILabel * label;
label.minimumFontSize = 14;

Установить определенный минимальный размер шрифта; однако это устарело с iOS 7

person Logan    schedule 13.03.2014
comment
Настройка minimumScaleFactor полезна только в том случае, если вы также включаете adjustsFontSizeToFitWidth. - person rmaddy; 14.03.2014

person    schedule
comment
Это работает, но также работает без установки количества строк в 1. Когда это необходимо? - person JuJoDi; 14.03.2014
comment
1 по умолчанию. Нет необходимости устанавливать его явно, если это то, что вы хотите. - person rmaddy; 14.03.2014