1

我正在将文本逐渐添加CATextLayerUIScrollView. 每次添加文本时,我都需要为 textLayer 和 scrollView's 添加高度contentSize,并调整 scrollView's contentOffset

(用户应该能够使用 scrollView 来查看以前的文本,但是当添加新文本时,我想以编程方式向下滚动到它。)

UIKitsizeWithFont:会将整个字符串视为在一行上,因此为了计算高度,我需要乘以由 textLayer 包装产生的行数返回的 size.height。

麻烦的是,如果我通过 textLayer 访问字符串,它不会包含任何额外的 '\n' 或 '\r' 字符来解释包装。

当然有某种方法可以获得包装信息吗?也许以某种方式源自超类CALayer?否则我会被困在计算自己的换行符。

4

2 回答 2

2

我假设CATextLayer内部使用 Core Text 进行布局,因此您可以执行相同操作并使用CTFramesetterSuggestFrameSizeWithConstraints给定宽度的属性字符串计算适当的高度。

于 2012-04-06T01:24:57.833 回答
0

好吧,我最终放弃了 CATextLayer 的换行行为并做我自己的换行符——无论如何,在这种情况下我不得不这样做,因为我对不同的行使用不同的字体,导致它们的大小发生变化。

但我不明白为什么 CATextLayer 不允许访问其包装函数正在执行的操作——要么将换行符添加到字符串属性本身,然后我们可以访问它,要么只是提供“lineCount”只读访问器.

于 2012-04-05T14:32:04.973 回答