美文网首页iOS项目框架搭建iOSiOS Developer
计算Lable长度或高度的两种方法

计算Lable长度或高度的两种方法

作者: kangyiii | 来源:发表于2016-12-17 16:12 被阅读107次

    在iOS开发开发中可能需要计算Lable宽度(一行)和计算Lable高度(多行)的需求。其实本质上就是计算字符串的宽度或高度。

    1.计算单行Lable宽度:

    调用方法:
    //字符串对象调用
    - (CGSize)sizeWithAttributes:(NSDictionary<NSString *,id> *)attrs;
    
    参数:

    attrs:这个字典中主要传入的参数是字体的大小。

    范例:
    //这个str可以认为是Lable.text
    NSString * str = @"就让秋风带走我的思念带走我的泪,我还一直等候再相约的地点";
    CGSize strSize = [str sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17]}];
    //通过计算出来的宽度来创建lable。
    UILabel * lable = [[UILabel alloc]initWithFrame:CGRectMake(0, 5, strSize.width, strSize.height)];
    
    

    2.计算多行Lable的高度(也能计算单行宽度):

    这里有个前提:既然是计算高度,必须有一个固定的宽度。

    调用方法:
    //字符串对象调用
    - (NSRect)boundingRectWithSize:(NSSize)size options:(NSStringDrawingOptions)options;
    
    参数:

    size:这个size主要约束你的文本的宽或者高,如果想计算Lable高度,就要固定宽度,高度最好写0。如果想计算Lable宽度,固定高度,宽度最好写0。

    options:这个参数可以根据计算要求做出选择。
    1.NSStringDrawingUsesLineFragmentOrigin:整个文本将以每行组成的矩形为单位计算整个文本的尺寸。

    2.NSStringDrawingUsesFontLeading:计算行高时使用行间距。(行高=字体大小+行间距)

    3.NSStringDrawingUsesDeviceMetrics:计算布局时使用图元字形,而不是印刷字体。

    4.NSStringDrawingTruncatesLastVisibleLine:如果文本内容超出指定的矩形限制,文本将被截去并在最后一个字符后加上省略号。如果使用1选项,则该选项被忽略

    范例:
    NSString * str2 = @"就让秋风带走我的思念带走我的泪,我还一直等候再相约的地点,就让秋风带走我的思念带走我的泪,我还一直等候再相约的地点";
    
    CGSize textSize = [str2 boundingRectWithSize:CGSizeMake(0, 320) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12]} context:nil].size;
        
    UILabel * lable2 = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, textSize.width, textSize.height)];
    

    相关文章

      网友评论

      本文标题:计算Lable长度或高度的两种方法

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