Sean's Note: Calculate UILabel for proper height

2015年4月9日 星期四

Calculate UILabel for proper height

在多國語言中,最常見發現的問題就是字串 truncated,所以在拉 UILabel 時,
高就不能設死,如果設太小,落落長的語言如西文和德文,就會 truncated,
設太多又會讓簡短的繁簡中留有太多空白,這時就可以用計算的方式來設得剛剛好。
NSString 底下有個方法可以用來計算:

- boundingRectWithSize:options:attributes:context:

+ (CGFloat)getMaximalHeightForText:(NSString *)text withFont:(UIFont *)font withWidth:(CGFloat)width {
    CGRect frame = [text boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) // Give CGFLOAT_MAX for height to calculate desired height.
                                      options:(NSLineBreakByWordWrapping | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading) 
                                   attributes:@{NSFontAttributeName:font}
                                      context:nil];
    return frame.size.height+5; // 5 is added for compensation.
}

沒有留言:

張貼留言