ios - 如何计算 UITextView 相对于原点的第一个基线位置

标签 ios uitextview

如何计算 UITextView 第一个基线位置?

enter image description here

我试过这样计算:

self.textView.font!.descender + self.textView.font!.leading

但是,我得到的值不正确。有什么想法、提示吗?

最佳答案

有一张图来自 Apple document

Figure 9-4  Font metrics

根据我的理解,font.descender + font.leading 给出了第一条基线和第二条线开始之间的距离。

如果 UITextField 没有 secret 填充,我会想象 font.lineHeight 会给你正确的数字。


编辑

UITextFieldUITextView 共享相同的 UIFont 属性。

对于UITextView,可以设置一个额外的textContainerInset

编辑 2

进一步查看 UITextView 可以提供有关可以实现的目标的更多线索:

它其实有一个textContainer属性,是一个NSTextContainer

The NSTextContainer class defines a region in which text is laid out. An NSLayoutManager object uses one or more NSTextContainer objects to determine where to break lines, lay out portions of text, and so on.

它已被 layoutManager 使用,理论上第一行文本顶部的填充可以通过 usedRectForTextContainer(_:) 找到。

一旦我手头有一台 Mac,我就需要对此进行测试。 :)

关于ios - 如何计算 UITextView 相对于原点的第一个基线位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35922215/

相关文章:

ios - UITextView 在检测到 Action 时更改字体

ios - 在 UITableView 上激活 Speech to Text

ios - RestKit 主键属性

android - 将所有 TextView 都对齐到所有屏幕的中心和相似的左对齐

ios - 如何在textview中获取滚动位置? ( swift )

iOS SDK 可以静音或取消来电吗

ios - 根据 UITextView 属性文本计算 UICollectionViewCell 高度

ios - 获取用户位置

iphone - 更改 TableView 标题文本颜色

ios - 已释放对象的校验和不正确 - 如何在设备上进行故障排除?