Is it possible to use the autoshrink property in conjunction on multiple lines on a UILabel
? for example, the large text size possible on 2 available lines.
A view that displays one or more lines of informational text.
I modified the accepted answer's code somewhat to make it a category on UILabel
:
Header file:
#import <UIKit/UIKit.h> @interface UILabel (MultiLineAutoSize) - (void)adjustFontSizeToFit; @end
And the implementation file:
@implementation UILabel (MultiLineAutoSize) - (void)adjustFontSizeToFit { UIFont *font = self.font; CGSize size = self.frame.size; for (CGFloat maxSize = self.font.pointSize; maxSize >= self.minimumFontSize; maxSize -= 1.f) { font = [font fontWithSize:maxSize]; CGSize constraintSize = CGSizeMake(size.width, MAXFLOAT); CGSize labelSize = [self.text sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap]; if(labelSize.height <= size.height) { self.font = font; [self setNeedsLayout]; break; } } // set the font to the minimum size anyway self.font = font; [self setNeedsLayout]; } @end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With