iOS UILabel设置行间距和字间距并计算高度

#define UILABEL_LINE_SPACE 6app

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

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

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

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

    paraStyle.lineBreakMode = NSLineBreakByCharWrapping;get

    paraStyle.alignment = NSTextAlignmentLeft;it

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

    paraStyle.hyphenationFactor = 1.0;table

    paraStyle.firstLineHeadIndent = 0.0;tab

    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;

}