美文网首页iOS自我学习库
iOS Label的一些总结

iOS Label的一些总结

作者: Onegeng | 来源:发表于2017-04-13 17:16 被阅读347次

    Label是比较常用的一个控件,记录一些比较使用的技术

    一、计算Label的高度

    • 计算单行指定字体大小下的高度
    -(CGSize)sizeWithAttributes:(nullable NSDictionary<NSString *, id> *)attrs NS_AVAILABLE(10_0, 7_0);
    
    • 具体使用方法 例子:
     NSString *testStr = @"Hello Word";
    [testStr sizeWithAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:14.0]}];//14.0为字体大小,根据实际情况而定
    

    返回单行testStr的长度和高度

    • 指定宽度或者高度获取文字的宽度或者高度
    /**
     * size: 文字显示区域
     * options
     * attributes
     * context
    */
    /**
     * NSStringDrawingUsesLineFragmentOrigin
     * NSStringDrawingUsesFontLeading
     * NSStringDrawingUsesDeviceMetrics
     * NSStringDrawingTruncatesLastVisibleLine
    */
    -(CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 7_0);
    
    • 具体使用方法 例子:
    CGSize totleSize = [titleboundingRectWithSize:CGSizeMake(YYTScreenW-28,MAXFLOAT)options:NSStringDrawingUsesLineFragmentOriginattributes:@{NSFontAttributeName: [UIFontsystemFontOfSize:14.0]}context:nil].size;
    

    返回指定宽度下,文本的高度.同样可以返回指定高度下,文本的宽度

    • 计算文本行数
      文本的总共高度 / 单行高度 = 文本行数
    • 具体使用方法 例子:
    int numberLine =ceil(totleSize.height/ size.height);
    

    备注:

    • ceil:如果参数是小数,则求最小的整数但不小于本身 例: ceil(3.141) = 4;
    • round:如果参数是小数,则求值为四舍五入 例: round(3.14) = 3; round(3.16) = 4;
    • floor: 如果参数是小数,则求最大的整数但不大于本身 例: ceil(3.141) = 3;

    二、同一个Label中文字的大小或者颜色不同

    • 需求:同一个Label需要展示不同颜色
        NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:@"   温馨提示:请仔细核对缴费信息"];
        NSRange range = {0, 8};
        NSRange rang1 = {8, 9};
        UIColor *color = [UIColor colorWithRed:250 / 255.0 green:114 / 255.0 blue:59 / 255.0 alpha:1];
        [attStr setAttributes:@{NSForegroundColorAttributeName : color} range:range];
        [attStr setAttributes:@{NSForegroundColorAttributeName : [UIColor colorWithRed:102 / 255.0 green:102 / 255.0 blue:102 / 255.0 alpha:1]} range:rang1];
        label.attributedText = attStr;
    

    后续继续补充关于Label的知识点

    相关文章

      网友评论

        本文标题:iOS Label的一些总结

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