我遇到了CoreText的“鸡蛋或鸡蛋”问题。
我需要知道CGSize
和NSAttributedString
在图像被包裹时会占用。
我有一个UITableView,在右上角显示文本和图像。
在我的模型中,我存储CTFrameSetterRef
,即我为所有人计算一次
加载我的模型实体,然后在CTFrameSetterRef
中将cellForRowAtIndexPath
传递给我的单元格。
我还使用frameSetter和CTFramesetterSuggestFrameSizeWithConstraints
预先计算单元格的高度
这很简单,我现在有一个对象数组,它们有一个要渲染的AttributedString,一个用于渲染它们的frameSetter和一个高度,所以tableView在更新单元格之前知道这一点。
现在我想将图片包裹在右上角的图片周围。 当我想预先计算值时,这会出现一些问题。
据我所知,我需要一个CTFrameSetter来计算大小 (使用CTFramesetterSuggestFrameSizeWithConstraints)。 如果我的框架是矩形的,这只给我一个大小 - 如果我想要包装文本我需要创建一个路径并设置它的大小 - 但这是在我知道大小之前! 然后我需要将Path添加到字典中并使用字典构建CTFrameRef。
我的问题是,如果我的归因文字包裹在图片周围,我该如何预先计算单元格的高度?
答案 0 :(得分:1)
您需要逐行布局:
fitRange
获取行高CTFramesetterSuggestFrameSizeWithConstraints
。fitRange
结束时继续。