iOS开发技巧之:UILabel设置行间距和字间距并计算高度

    xiaoxiao2021-03-25  109

    #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 = [[NSMutableParagraphStyle allocinit];

        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:paraStyleNSKernAttributeName:@1.5f };

        

        NSAttributedString *attributeStr = [[NSAttributedString allocinitWithString:str attributes:dic];

        label.attributedText = attributeStr;

    }

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

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

        NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle allocinit];

        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:paraStyleNSKernAttributeName:@1.5f };

        

        CGSize size = [str boundingRectWithSize:CGSizeMake(width, HEIGHToptions:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;

        return size.height;

    }

    原文链接:http://blog.csdn.net/luco2008/article/details/50977718

    转载请注明原文地址: https://ju.6miu.com/read-13015.html

    最新回复(0)