iOS设置行间距

有时候会在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;
}

你可能感兴趣的:(iOS设置行间距)