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

在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)];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,690评论 1 92
  • HTML标签解释大全 一、HTML标记 标签:!DOCTYPE 说明:指定了 HTML 文档遵循的文档类型定义(D...
    米塔塔阅读 8,704评论 1 41
  • 2017.02.22 可以练习,每当这个时候,脑袋就犯困,我这脑袋真是神奇呀,一说让你做事情,你就犯困,你可不要太...
    Carden阅读 5,232评论 0 1
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,858评论 0 17
  • 1 计算机体系 存储器的层次结构与高速缓存 当存储器的层次结构满足以下条件时:a 容量递增b 存取时间递增c 访问...
    1519f8ccc7b0阅读 4,617评论 0 0

友情链接更多精彩内容