Create a gist now

Instantly share code, notes, and snippets.

Making UILabel's adjustsFontSizeToFitWidth and minimumFontSize play nice with multi-lined labels
@interface NSString (KBAdditions)
- (CGFloat)fontSizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size minimumFontSize:(CGFloat)minimumFontSize;
#import "NSString+KBAdditions.h"
@implementation NSString (KBAdditions)
// Original code from
- (CGFloat)fontSizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size minimumFontSize:(CGFloat)minimumFontSize {
CGFloat fontSize = [font pointSize];
CGFloat height = [self sizeWithFont:font constrainedToSize:CGSizeMake(size.width,FLT_MAX) lineBreakMode:UILineBreakModeWordWrap].height;
UIFont *newFont = font;
//Reduce font size while too large, break if no height (empty string)
while (height > size.height && height != 0 && fontSize > minimumFontSize) {
newFont = [UIFont fontWithName:font.fontName size:fontSize];
height = [self sizeWithFont:newFont constrainedToSize:CGSizeMake(size.width,FLT_MAX) lineBreakMode:UILineBreakModeWordWrap].height;
// Loop through words in string and resize to fit
for (NSString *word in [self componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]) {
CGFloat width = [word sizeWithFont:newFont].width;
while (width > size.width && width != 0 && fontSize > minimumFontSize) {
newFont = [UIFont fontWithName:font.fontName size:fontSize];
width = [word sizeWithFont:newFont].width;
return fontSize;
@interface UILabel (KBAdditions)
- (void)sizeToFitMultipleLines;
#import "UILabel+KBAdditions.h"
#import "NSString+KBAdditions.h"
@implementation UILabel (KBAdditions)
- (void)sizeToFitMultipleLines {
if (self.adjustsFontSizeToFitWidth) {
CGFloat adjustedFontSize = [self.text fontSizeWithFont:self.font constrainedToSize:self.frame.size minimumFontSize:self.minimumFontSize];
self.font = [self.font fontWithSize:adjustedFontSize];
[self sizeToFit];

This comment has been minimized.

Show comment
Hide comment

mkubenka commented Jul 9, 2014

Fork removing deprecated warnings on iOS7.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment