zoukankan      html  css  js  c++  java
  • UILabel设置行间距和字间距并计算高度-b

    #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 = [[NSMutableParagraphStylealloc] init];

        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:paraStyle,NSKernAttributeName:@1.5f
    };

        

        NSAttributedString *attributeStr = [[NSAttributedStringalloc] initWithString:strattributes:dic];

        label.attributedText = attributeStr;

    }

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

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

        NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStylealloc] init];

        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:paraStyle,NSKernAttributeName:@1.5f
    };

        

        CGSize size = [strboundingRectWithSize:CGSizeMake(width,HEIGHT) options:NSStringDrawingUsesLineFragmentOriginattributes:dic context:nil].size;

        return size.height;

    }

  • 相关阅读:
    用内联取代宏代码
    参数的缺省值
    令人迷惑的隐藏规则
    重载与覆盖
    重载是如何实现的?
    重载的起源
    C++函数的高级特性
    使用调试器逐步跟踪程序
    new/delete 的使用要点
    malloc/free 的使用要点
  • 原文地址:https://www.cnblogs.com/isItOk/p/5838310.html
Copyright © 2011-2022 走看看