2012-07-09 92 views
1

是否可以拥有一个多行UILabel,可以自动调整UIFont大小以适应UILabel的大小?如果不是,那么实现这一目标的最佳方式是什么?我不想调整UILabel/UITextView的帧大小。到目前为止,我一直在做这样的:多行自动调整文本UILabel

int currentFontSize = 18; 
    UIFont *currentFont = [UIFont fontWithName:kProximaNovaBold size:currentFontSize]; 
    CGSize storyTitleSize = [storyTitle sizeWithFont:currentFont constrainedToSize:self.newsfeedStoryTitle_.frameSize]; 

    while (storyTitleSize.height >= self.newsfeedStoryTitle_.frameHeight){ 
     currentFontSize--; 
     currentFont = [UIFont fontWithName:kProximaNovaBold size:currentFontSize]; 
     storyTitleSize = [storyTitle sizeWithFont:currentFont constrainedToSize:self.newsfeedStoryTitle_.frameSize]; 
    } 

    [self.newsfeedStoryTitle_ setFont:currentFont]; 
    [self.newsfeedStoryTitle_ setText:storyTitle]; 

回答

3

你想:sizeWithFont:constrainedToSize:lineBreakMode:[Source]

//Calculate the expected size based on the font and linebreak mode of your label 
CGSize maximumLabelSize = CGSizeMake(self.bounds.size.width, NSIntegerMax); 

CGSize expectedLabelSize = [theString sizeWithFont:the Font constrainedToSize:maximumLabelSize lineBreakMode:theLineBreakMode]; 

//adjust the label the the new height. 
CGRect newFrame = theLabel.frame; 
newFrame.size.height = expectedLabelSize.height; 
theLabel.frame = newFrame;