Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CTFramesetterSuggestFrameSizeWithConstraints包装文本时_Ios_Core Text - Fatal编程技术网

Ios CTFramesetterSuggestFrameSizeWithConstraints包装文本时

Ios CTFramesetterSuggestFrameSizeWithConstraints包装文本时,ios,core-text,Ios,Core Text,我在CoreText中遇到了“鸡还是蛋”的问题 我需要知道CGSize一个NSAttributedString当它被包装在一个图像上时将占用的空间。 我有一个UITableView,在右上角显示文本和图像。 在我的模型上,我存储了CTFrameSetterRef,也就是说,我只计算一次 加载模型实体并在cellForRowAtIndexPath中传递单元格aCTFrameSetterRef时显示模型实体 我还使用frameSetter和ctFramesetter建议FrameSizeWithCo

我在CoreText中遇到了“鸡还是蛋”的问题

我需要知道
CGSize
一个
NSAttributedString
当它被包装在一个图像上时将占用的空间。 我有一个UITableView,在右上角显示文本和图像。 在我的模型上,我存储了
CTFrameSetterRef
,也就是说,我只计算一次 加载模型实体并在
cellForRowAtIndexPath
中传递单元格a
CTFrameSetterRef
时显示模型实体

我还使用frameSetter和
ctFramesetter建议FrameSizeWithConstraints
这是直截了当的,我现在有一个对象数组,其中有一个AttributeString要渲染,一个frameSetter要渲染,还有一个高度,这样tableView在更新单元格之前就知道了这一点

现在,我想将文本环绕在右上角的图像上。 当我想要预先计算值时,这会出现一些问题

据我所知,我需要一个CTFrameSetter来计算大小 (使用CTFramesetterSuggestFrameSizeWithConstraints)。 如果我的框架是矩形的,这只会给我大小——如果我想包装文本,我需要创建一个路径并设置它的大小——但这是在我知道大小之前! 然后我需要将路径添加到字典中,并使用字典构建CTFrameRef


我的问题是,如果属性文本环绕在图像周围,如何预先计算单元格的高度?

您需要逐行布局:

  • 使用宽度限制布局第一行,并使用
    CTFrameSettersSuggestFrameSizeWithConstraints
    获取行高和
    fitRange
  • 在第一行下方布置第二行,并设置适当的宽度限制-根据前几行的高度和所需的间距,您可以计算当前行的原点.y,用于确定该行是否会与图像相撞,并在最后一个
    fitRange
    结尾处继续
  • 继续