有时候会在APP端显示大段的文字或者是弹窗显示几行提示语,单倍行距会显得十分拥挤,不美观,这时候就需要设置行间距了。如果在app中用得比较多的话,推荐在nsstring 的 Category中写方法,如果用得比较少,只在一两个文件中用到,也可以直接写在文件中。
下面是在Category中的写法:
* 设置行间距和字间距
*
* @param lineSpace 行间距
* @param kern 字间距
*
* @return 富文本
-(NSAttributedString*)getAttributedStringWithLineSpace:(CGFloat)lineSpace kern:(CGFloat)kern {
NSMutableParagraphStyle*paragraphStyle = [NSMutableParagraphStylenew];
//调整行间距
paragraphStyle.lineSpacing= lineSpace;
NSDictionary*attriDict =@{NSParagraphStyleAttributeName:paragraphStyle,NSKernAttributeName:@(kern)};
NSMutableAttributedString*attributedString = [[NSMutableAttributedStringalloc]initWithString:selfattributes:attriDict];
returnattributedString;
}
看了几个markdown的文章,终于知道怎么贴代码了。
下面是在指定的宽度下获取富文本的高度的方法:(因为NSString没有方法boundingRectWithSize,所以获取高度的方法没有放在Category中)
* 获取富文本的高度
*
* @param string 文字
* @param lineSpace 行间距
* @param font 字体大小
* @param width 文本宽度
*
* @return size
- (CGSize)getAttributionHeightWithString:(NSString *)string lineSpace:(CGFloat)lineSpace font:(UIFont *)font width:(CGFloat)width {
NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
paragraphStyle.lineSpacing = lineSpace;
NSDictionary *dict = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle};
CGSize size = [string boundingRectWithSize:CGSizeMake(width, MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
attributes:dict
context:nil].size;
return size;
}
网友评论