美文网首页iOSiOS开发
iOS设置行间距

iOS设置行间距

作者: 34码的小孩子 | 来源:发表于2016-08-23 11:35 被阅读2238次

    有时候会在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设置行间距

      本文链接:https://www.haomeiwen.com/subject/ixzgsttx.html