How can I make text in a UILabel shrink font size

后端 未结 4 618
慢半拍i
慢半拍i 2021-02-03 22:45

If a UILabel contains too much text, how can I setup my label so that it shrinks font-sizes?

Here is how I am setting up my UILabel:

     descriptionLabe         


        
相关标签:
4条回答
  • 2021-02-03 23:11

    Set the adjustsFontSizeToFitWidth property to YES.

    0 讨论(0)
  • 2021-02-03 23:12

    To resize the text in a 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's font to the newly adjusted font.
     aLabel.font = font;
    }
    
    0 讨论(0)
  • 2021-02-03 23:13

    If you want the number of lines to also increase if needed, use Steve N's solution, with the if statement as so:

    if(labelSize.height <= aLabel.frame.size.height)
    {
      aLabel.numberOfLines = labelSize.height / font.lineHeight;
    
      break;
    }
    
    0 讨论(0)
  • 2021-02-03 23:30
    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";
    
    0 讨论(0)
提交回复
热议问题