用 CoreText 模拟 UITextView 文本渲染?

Posted

技术标签:

【中文标题】用 CoreText 模拟 UITextView 文本渲染?【英文标题】:Emulating UITextView text rendering with CoreText? 【发布时间】:2013-03-07 13:04:47 【问题描述】:

我正在尝试创建一个能够突出显示各种单词的 TextView。我不想在 ios 6 中使用属性文本属性,因为我想支持 iOS 5 和其他问题(例如,请参见此处:UITextView attributedText and syntax highlighting)。

所以我唯一的选择就是使用 CoreText。我找到了这个项目:https://github.com/KayK/RegexHighlightView。它基本上所做的就是覆盖 UITextView 的 drawRect 方法并使用 CoreText 绘制内容。问题是核心文本渲染与 UITextView 渲染不同 - 这导致光标位于错误的位置(随着文本变长变得更糟)。

有没有希望解决这个问题?也许还有其他聪明的方法?

【问题讨论】:

【参考方案1】:

试试这个: https://github.com/mattt/TTTAttributedLabel TTTAttributedLabel 支持 iOS 4.0 及更高版本。

【讨论】:

【参考方案2】:

试试 EGOTextView。或者你可以做 webView 的方式。 (UITextView 实际上主要是在后台执行此操作)

【讨论】:

EGOTextView 有很多错误并且需要认真的工作(我尝试使用它但无法使其接近 UITextView 体验)。 WebView 选项是我希望避免的,因为它对我来说很复杂...... 可能不会比 CoreText 复杂。 EGOTextView 很好,只是不完美。大多数 WebView 实现也有相当多的错误。 OMNI 框架也有一个不错的 CoreText 实现。没有一些努力,你是不会摆脱困境的。实现文本布局真的很难。 你能给我一个文本视图的开源 WebView 实现的例子吗? 当然,在 iOS 6 之前它一直是一个非常普遍的范例。试试这个谷歌搜索:uiwebview 文本编辑器

以上是关于用 CoreText 模拟 UITextView 文本渲染?的主要内容,如果未能解决你的问题,请参考以下文章

UILabel 或 UITextView 在两行中带有第一个字母非常大的字体

iOS阅读器实践系列coretext纯文本排版基础

使用CoreText实现图文混排

UITextView:链接检测在模拟器中工作,而不是在设备上

iPhone 上的 CoreText 和删除线

PrototypeCell 中的 UITextView 在两个 iPhone 模拟器中具有不同的行为