UILabel hat die fantastische Eigenschaft adjustsFontSizeToFitWidth. Ist adjustsFontSizeToFitWidth = YES, wird die Schriftgröße des Textes eines UILabels so angepasst, dass die Textlänge der Breite des UILabels entspricht. Das ganze funktioniert leider nur unter einer Bedingung: Die Eigenschaft numberOfLines darf nicht größer 1 sein. Sprich bei Multiline UILabels funktioniert adjustsFontSizeToFitWidth nicht.

Ich habe nun eine kleine Erweiterung für UILabel geschrieben um auch bei Multiline UILabels die Schriftgröße akkurat zu justieren:

Download UILabelMultilineFontAdjustment.zip

Beispiel 1:

 //Header für Erweiterung von UILabel einbinden
#import "UILabel+MultilineFontAdjustment.h"
 
@implementation TestClass
 
- (void) testMethod
{
	UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 130.0, 30.0)];
	label.text = @"Das ist ein Text, dessen Schriftgröße angepasst werden soll!";
	label.numberOfLines = 2;
	//Schriftgröße anpassen:
	[label adjustMultilineFontsize];
 
	//...
}
@end

Beispiel 2:

Mit Angabe von maximaler und minimaler Schriftgröße

 //Header für Erweiterung von UILabel einbinden
#import "UILabel+MultilineFontAdjustment.h"
 
@implementation TestClass
 
- (void) testMethod
{
	UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 130.0, 30.0)];
	label.text = @"Das ist ein Text, dessen Schriftgröße angepasst werden soll!";
	label.numberOfLines = 2;
	//Schriftgröße anpassen zwischen  einer Größe von 20.0f und 12.0f
	[label adjustMultilineFontsize:20.0 minimum:12.0];
 
	//...
}
@end