2013-10-05 14 views
13

Mam etykietę ustawioną na adjustsFontSizeToFitWidth = YES i potrzebuję uzyskać rzeczywisty wyświetlany rozmiar czcionki.Jak uzyskać dostosowany rozmiar czcionki z UILabel, gdy adjustsFontSizeToFitWidth jest TAK w systemie iOS 7?

Teraz iOS 7 wycofał wszystkie metody, które wcześniej działały, a wszystkie pytania dotyczące SO sugerują użycie tych nieaktualnych metod.

Uczynię to pytanie nagrodą tak szybko, jak tylko będę mógł. Proszę nie zamykać.

+0

Problemem jest to opisane tutaj i ma odpowiedzi! http://stackoverflow.com/questions/2396715/how-to-figure-out-the-font-size-of-a-uilabel-when-adjustsfontsizetofitwidth-is – katleta3000

+0

http://stackoverflow.com/a/ 32567240/1442541 – evya

+0

proszę sprawdzić moją odpowiedź na dole poniżej –

Odpowiedz

-2

Istnieje własność tylko do odczytu, która pozwala to zrobić. Możesz uzyskać do niego dostęp w następujący sposób:

nameLabel.adjustsFontSizeToFitWidth = YES; 

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

float fontSize = nameLabel.font.xHeight; 

To da ci rozmiar czcionki po dopasowaniu jej do szerokości.

+0

-1 Ta odpowiedź jest niepoprawna. Spójrz na ten blog: http://www.cocoanetics.com/2010/02/understanding-uifont/ -xHeight i wszystkie inne dane UIFont nadal odzwierciedlają tylko oryginalny rozmiar czcionki. – daveMac

-2

Możesz pobrać rozmiar czcionki UILabeltekst używając poniższego wiersza kodu.

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; 

Wypróbuj tę.

+4

Na iOS 8, 'float size = lblObj.font.pointSize' podaje żądany rozmiar czcionki, a nie faktyczny wyświetlany rozmiar czcionki. –

-1

Spróbuj wstawiania [lblObj sizeToFit] tuż przed wezwaniem rozmiar czcionki

0

UILabel wyświetlane fontSize w przypadku korzystania adjustsFontSizeToFitWidth w 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); 
Powiązane problemy