动态计算NSAttributedString的宽高的方法
发布网友
发布时间:2024-10-12 13:47
我来回答
共1个回答
热心网友
时间:2024-11-02 22:19
最近在复盘之前项目中关于文本宽高计算的实现, 这里简单归纳总结一下.
文本的宽高计算的API主要有如下方法:
另外关于配置options:
官方文档中有部分注释:
因此, 是计算多行文本信息在 NSStringDrawingOptions 选项, 一般需要添加如下的配置, 不然计算出来的高度不准确:
特殊情况: 使用该方法计算完文本中中有 \n 或者 \r\n , 会导致计算宽高不准确, 这里贴一个网上针对这个问题的解决方法(但是本人并不建议这样做):
这里以指定的UILabel来作为富文本展示示例
最后展示出来两者大小差不多的, 但是注意第一条中使用 ceil 向上取整操作!
网上关于CoreText相关信息非常多, 简单来说就是使用iOS系统的排版, 然后通过排版以后结果信息来获取系统排版渲染以后的结果.
常见使用CTFrame计算文本高度有三种方法, 其中建议使用 CTFramesetterSuggestFrameSizeWithConstraints 进行计算
网上也有使用 intrinsicContentSize 结合 preferredMaxLayoutWidth 计算自适应高度的内容
UIlabel拥有 intrinsicContentSize 方法调用逻辑可能如下:
https://www.jianshu.com/p/6ed98368ceed
https://my.oschina.net/FEEDFACF/blog/1858685