How can I make text in font size of UILabel utilities

If UILabel contains too much text, how can I customize the shortcut so that it reduces the font size?

This is how I configure my UILabel:

descriptionLabel = [[UILabel alloc] initWithFrame:CGRectMake(200, 30, 130, 150)]; [descriptionLabel setFont:[Utils getSystemFontWithSize:14]]; [descriptionLabel setBackgroundColor:[UIColor clearColor]]; [descriptionLabel setTextColor:[UIColor whiteColor]]; descriptionLabel.numberOfLines = 1; [self addSubview:descriptionLabel]; 
+24
objective-c iphone cocoa-touch interface-builder
Apr 21 '10 at 18:55
source share
4 answers
 descriptionLabel.adjustsFontSizeToFitWidth = YES; descriptionLabel.minimumFontSize = 10.0; //adjust to preference obviously 

The following example is tested and verified on iPhone Simulator 3.1.2:

 UILabel *descriptionLabel = [[UILabel alloc] initWithFrame:CGRectMake(90, 0, 200, 30)]; descriptionLabel.font = [UIFont systemFontOfSize:14.0]; descriptionLabel.minimumFontSize = 10.0; descriptionLabel.adjustsFontSizeToFitWidth = YES; descriptionLabel.numberOfLines = 1; descriptionLabel.text = @"supercalifragilisticexpialidocious even thought he sound of it is something quite attrocious"; 
+58
Apr 21 '10 at 19:02
source share

To resize text in multi-line UILabel, you can use this helper method (based on code from 11 Pixel Studios):

 + (void)resizeFontForLabel:(UILabel*)aLabel maxSize:(int)maxSize minSize:(int)minSize { // use font from provided label so we don't lose color, style, etc UIFont *font = aLabel.font; // start with maxSize and keep reducing until it doesn't clip for(int i = maxSize; i >= minSize; i--) { font = [font fontWithSize:i]; CGSize constraintSize = CGSizeMake(aLabel.frame.size.width, MAXFLOAT); // This step checks how tall the label would be with the desired font. CGSize labelSize = [aLabel.text sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap]; if(labelSize.height <= aLabel.frame.size.height) break; } // Set the UILabel font to the newly adjusted font. aLabel.font = font; } 
+21
Dec 13 '10 at 21:23
source share
+4
Apr 21 '10 at 18:58
source share

If you want the number of rows to also increase, if necessary, use the Steve N solution with the if statement:

 if(labelSize.height <= aLabel.frame.size.height) { aLabel.numberOfLines = labelSize.height / font.lineHeight; break; } 
0
03 Sep 2018-11-11T00:
source share



All Articles