我们在展示文字信息时,经常会碰到换行自适应高度的文本,这时我们会发现换行之后,文本之间的行间距依然很小,导致看起来很拥挤,影响美观。因此以下代码就是来解决这些问题,新建一个NSString的类别,贴出如下代码:
1、调整行间距,字间距
/*
* 设置行间距和字间距
*
* @param string 字符串
* @param lineSpace 行间距
* @param kern 字间距
* @param font 字体大小
*
* @return 富文本
*/
- (NSAttributedString *)getAttributedWithString:(NSString *)string WithLineSpace:(CGFloat)lineSpace kern:(CGFloat)kern font:(UIFont *)font{
NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
//调整行间距
paragraphStyle.lineSpacing = lineSpace;
NSDictionary *attriDict = @{NSParagraphStyleAttributeName:paragraphStyle,NSKernAttributeName:@(kern),
NSFontAttributeName:font};
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:string attributes:attriDict];
return attributedString;
}
2、自适应高度
/* 获取富文本的高度
*
* @param string 文字
* @param lineSpace 行间距
* @param kern 字间距
* @param font 字体大小
* @param width 文本宽度
*
* @return size
*/
- (CGSize)getAttributionHeightWithString:(NSString *)string lineSpace:(CGFloat)lineSpace kern:(CGFloat)kern font:(UIFont *)font width:(CGFloat)width {
NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
paragraphStyle.lineSpacing = lineSpace;
NSDictionary *attriDict = @{
NSParagraphStyleAttributeName:paragraphStyle,
NSKernAttributeName:@(kern),
NSFontAttributeName:font};
CGSize size = [string boundingRectWithSize:CGSizeMake(width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attriDict context:nil].size;
return size;
}