iOS 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 = [[NSMutableParagraphStylealloc] 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 = [[NSAttributedStringalloc] initWithString:strattributes:dic];

    label.attributedText = attributeStr;

}


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

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

    NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStylealloc] 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 = [strboundingRectWithSize:CGSizeMake(width,HEIGHT) options:NSStringDrawingUsesLineFragmentOriginattributes:dic context:nil].size;

    return size.height;

}

作者:luco2008

博客地址:http://blog.csdn.net/luco2008/article/details/50977718

阅读更多
个人分类: label
上一篇iOS视频压缩存储至本地并上传至服务器
下一篇iOS一种高斯模糊渐变动画的实现
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭