objective-c - 如何获取 CATextLayer 的环绕计数以计算高度

标签 objective-c ios uiscrollview word-wrap catextlayer

我正在向 UIScrollView 中的包装 CATextLayer 添加文本。每次添加文本时,我都需要为 textLayer 和 scrollView 的 contentSize 增加高度,并调整 scrollView 的 contentOffset

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

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

问题是,如果我通过 textLayer 访问字符串,它不会包含任何额外的“\n”或“\r”字符来说明换行。

我确实可以通过某种方式获取包装信息吗?也许以某种方式从父类(super class) CALayer 派生?否则我将无法计算自己的换行符。

最佳答案

我假设 CATextLayer 在内部使用 Core Text 进行布局,因此您可以这样做并使用 CTFramesetterSuggestFrameSizeWithConstraints 为具有给定宽度的属性字符串计算适当的高度.

关于objective-c - 如何获取 CATextLayer 的环绕计数以计算高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9928744/

相关文章:

ios - 命令/usr/bin/codesign 失败,退出代码为 1?

ios - GCM 链接器命令失败,退出代码 1 : Apple-Mach-O Linker Error

ios - 选项卡更改时 View 会更改大小

objective-c - 使用 "SCNView"而不是 "ARSCNView"– 当不支持时

ios - 使用相机模式拍摄图像时出错

ios - 如何改进 Swift/Xcode iOS 应用程序中文本字段的控制语句?

iphone - UIPageControl——点击点时 View 没有改变

iphone - UIScrollview 仅在拖动 uiviews 时滚动

objective-c - 在 UIPanGestureRecognizer 和重新启用的 UIScrollView 之间连续滚动

objective-c - XCode 4.2 为什么我在 .h 和 .m 文件中看到 @interface