Подтвердить что ты не робот

Как получить отрегулированный размер шрифта от UILabel при настройкеFontSizeToFitWidth - ДА в iOS 7?

У меня есть метка, установленная на adjustsFontSizeToFitWidth = YES, и мне нужно получить фактический размер шрифта.

Теперь iOS 7 отвергла все методы, которые работали ранее, и все вопросы по SO предлагают использовать эти устаревшие методы.

Я сделаю этот вопрос щедростью, как только мне позволено ТАК. Пожалуйста, не закрывайте.

4b9b3361

Ответ 1

UILabel отображает fontSize в случае использования adjustsFontSizeToFitWidth в iOS 7 Objective-C

 UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 40)];
 label.text = @" Your Text goes here into this label";
 label.adjustsFontSizeToFitWidth = YES;
 NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithAttributedString:label.attributedText];
//Get the theoretical font-size
[attrStr setAttributes:@{NSFontAttributeName:label.font} range:NSMakeRange(0, attrStr.length)];
 NSStringDrawingContext *context = [NSStringDrawingContext new];
 context.minimumScaleFactor = label.minimumScaleFactor;
 [attrStr boundingRectWithSize:label.frame.size options:NSStringDrawingUsesLineFragmentOrigin context:context];
 CGFloat theoreticalFontSize = label.font.pointSize * context.actualScaleFactor;

 NSLog(@"theoreticalFontSize: %f",theoreticalFontSize);
 NSLog(@"AttributedString Width: %f", [attrStr size].width);
 double scaleFactor=label.frame.size.width/([attrStr size].width);
 double displayedFontSize=theoreticalFontSize*scaleFactor;
 NSLog(@"Actual displayed Font Size:%f",displayedFontSize);


//Verficiation of Result
 double verfication=(displayedFontSize * [attrStr length]);
 NSLog(@"Should be equal to %0.5f: %0.5f ", [attrStr size].width/17.0, label.frame.size.width/displayedFontSize);

Ответ 2

Попробуйте вставить [lblObj sizeToFit] непосредственно перед запросом размера шрифта

Ответ 3

Здесь есть свойство readonly, которое позволяет вам это сделать. Вы можете получить к нему доступ так:

nameLabel.adjustsFontSizeToFitWidth = YES;

//Make sure to use the line below AFTER the line above

float fontSize = nameLabel.font.xHeight;

Это даст вам размер шрифта после его настройки в соответствии с шириной.

Ответ 4

Вы можете получить размер шрифта UILabel текст с помощью этой строки кода.

UILabel *lblObj = [[UILabel alloc]init];
lblObj.text = @" Your Text";
lblObj.adjustsFontSizeToFitWidth = YES;
float size = lblObj.font.pointSize; //Here You will get the actual size of the text.
float lineHeight = lblObj.font.lineHeight;

Попробуйте это.