2013-10-05 3 views
13

Ich habe ein Etikett, das auf adjustsFontSizeToFitWidth = YES eingestellt ist, und ich muss die tatsächlich angezeigte Schriftgröße erhalten.Wie erhalten Sie eine angepasste Schriftgröße von UILabel, wenn "justsFontSizeToFitWidth" in iOS 7 auf "YES" eingestellt ist?

Jetzt veraltete iOS 7 alle Methoden, die zuvor funktionierten, und alle Fragen zu SO schlagen die Verwendung dieser veralteten Methoden vor.

Ich werde diese Frage ein Kopfgeld machen, sobald ich von SO erlaubt bin. Bitte nicht schließen.

+0

Das Problem hier diskutiert und Antworten hat, wird das Einfügen! 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

Bitte überprüfen Sie meine Antwort unten unter –

Antwort

-2

Es gibt eine schreibgeschützte Eigenschaft, mit der Sie das tun können. Sie können darauf zugreifen wie folgt

nameLabel.adjustsFontSizeToFitWidth = YES; 

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

float fontSize = nameLabel.font.xHeight; 

Dies gibt Ihnen die Schriftgröße, nachdem es an Breite angepasst wurde.

+0

-1 Diese Antwort ist falsch. Sehen Sie sich diesen Blog an: http://www.cocoaenetics.com/2010/02/understanding-uifont/ -xHeight und alle anderen Metriken von UIFont spiegeln nur die ursprüngliche Schriftgröße wider. – daveMac

-2

Sie können die Schriftgröße UILabelText mit dieser Codezeile erhalten.

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; 

Versuchen Sie diese.

+4

Auf iOS 8 gibt 'float size = lblObj.font.pointSize' die gewünschte Schriftgröße an, nicht die tatsächlich angezeigte Schriftgröße. –

-1

Versuchen [lblObj sizeToFit] kurz vor Anforderung der Schriftgröße

0

UILabel angezeigt size im Falle der Verwendung adjustsFontSizeToFitWidth in 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); 
Verwandte Themen