Коригирайте шрифта на 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