给UILabel设置行间距和字间距+计算UILabel的高度

#define UILABEL_LINE_SPACE 6

#define HEIGHT [ [ UIScreen mainScreen ] bounds ].size.height

//给UILabel设置行间距和字间距

- (void)setLabelSpace:(UILabel*)label withValue:(NSString*)str withFont:(UIFont*)font {    

    NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];   

    paraStyle.lineBreakMode = NSLineBreakByCharWrapping;   

    paraStyle.alignment = NSTextAlignmentLeft;   

    paraStyle.lineSpacing = UILABEL_LINE_SPACE; //设置行间距   

    paraStyle.hyphenationFactor = 1.0;   

    paraStyle.firstLineHeadIndent = 0.0;   

    paraStyle.paragraphSpacingBefore = 0.0;   

    paraStyle.headIndent = 0;   

    paraStyle.tailIndent = 0;   

    //设置字间距 NSKernAttributeName:@1.5f    

    NSDictionary *dic = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paraStyle, NSKernAttributeName:@1.5f};        

    NSAttributedString *attributeStr = [[NSAttributedString alloc] initWithString:str attributes:dic];   

    label.attributedText = attributeStr;

}

//计算UILabel的高度(带有行间距的情况)

- (CGFloat)getSpaceLabelHeight:(NSString*)str withFont:(UIFont*)font withWidth:(CGFloat)width {   

     NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];   

    paraStyle.lineBreakMode = NSLineBreakByCharWrapping;   

    paraStyle.alignment = NSTextAlignmentLeft;   

    paraStyle.lineSpacing = UILABEL_LINE_SPACE;   

    paraStyle.hyphenationFactor = 1.0;   

    paraStyle.firstLineHeadIndent = 0.0;   

    paraStyle.paragraphSpacingBefore = 0.0;   

    paraStyle.headIndent = 0;   

    paraStyle.tailIndent = 0;    

    NSDictionary *dic = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paraStyle, NSKernAttributeName:@1.5f};       

     CGSize size = [str boundingRectWithSize:CGSizeMake(width, HEIGHT) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;    

    return size.height;

}

你可能感兴趣的:(给UILabel设置行间距和字间距+计算UILabel的高度)