创建格式化的文本行

时间:2010-10-17 23:22:58

标签: iphone ipad core-text

我需要能够阅读使用XML标记的文本进行格式化并在iPad上格式化显示。一个技巧是我需要支持脚注。

我需要能够读取源代码,解析源代码,为源代码创建属性字符串,创建行。然后我需要在文本或脚注上写行,直到屏幕填满。

我被告知核心文本是我需要使用的。但是,与Apple的其他文档一样,Core Text文档简直令人尴尬。

有一个framesetter类可以将文本格式化为适合框架(看起来不是我想要做的)。 有一个排版行类可以格式化行。但似乎没有办法指定线的宽度。

考虑到需要完成此操作的各种应用程序,我无法找到任何示例。除了苹果“文档”之外,一些核心文本函数只能在最模糊的术语中“记录”,不会产生Google命中。

有人可以解释一下如何完成这个编程吗?

由于

1 个答案:

答案 0 :(得分:1)

有许多潜在的方法,但其中一种方法是使用CTTypeSetter。您缺少的细节是CTTypeSetterSuggestLineBreak和CTTypeSetterSuggestLineBreakWithOffset函数。这些确实需要宽度参数。

另一种方法是使用CTFrameSetter,它只在内部使用CTTypeSetter。然后,您可以在框架设置器的框架上调用CTFrameGetLines,并使用CTLineDraw单独渲染线条。使用 CGContextSetTextPosition告诉Core Graphics在哪里绘制每一行。如果您想确定每行代表原始字符串中的哪些字符,可以使用CTLineGetStringRange

由于听起来您是Core Text的新手,请注意其坐标系的原点位于屏幕的左下角,Y轴随着您向上移动而增加。 UIKit的其余部分使用相反的约定(左上角的原点,Y轴随着下降而增加)。您需要使用CGContextScaleCTM( context, 1, -1 )CGContextTranslateCTM进行更正。您也可能希望调用CGContextSetTextMatrix( context, CGAffineTransformIdentity )按预期进行文本渲染。