Iphone 创建格式化的文本行

Iphone 创建格式化的文本行,iphone,ipad,core-text,Iphone,Ipad,Core Text,我需要能够读取使用XML进行格式化标记的文本,并将其显示在iPad上。一个技巧是我需要支持脚注 我需要能够读取源代码,解析源代码,为源代码创建属性字符串,创建行。然后我需要在文本或脚注上写行,直到屏幕被填满 我被告知核心文本是我需要使用的。然而,与苹果的其他文档一样,核心文本文档也令人尴尬 有一个framesetter类,它格式化文本以适应框架(似乎不是我想要做的)。 有一个排字器类可以格式化行。但似乎没有办法指定线条的宽度 考虑到需要这样做的各种应用程序,我找不到任何示例。一些核心文本功能只是

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

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

我被告知核心文本是我需要使用的。然而,与苹果的其他文档一样,核心文本文档也令人尴尬

有一个framesetter类,它格式化文本以适应框架(似乎不是我想要做的)。 有一个排字器类可以格式化行。但似乎没有办法指定线条的宽度

考虑到需要这样做的各种应用程序,我找不到任何示例。一些核心文本功能只是用最模糊的术语“记录在案”,除了苹果的“记录在案”之外,不会在谷歌上产生任何点击率

有人能解释一下如何完成这个编程任务吗


谢谢

有很多潜在的方法,但其中之一就是使用CTTypeSetter。缺少的详细信息是CTTypeSetterSuggestLineBreak和CTTypeSetterSuggestLineBreakWithOffset函数。这些确实需要一个宽度参数

另一种方法是使用CTFrameSetter,它只在内部使用CTTypeSetter。然后,您可以在从帧设置器获得的帧上调用
CTFrameGetLines
,并使用
CTLineDraw
单独渲染这些行。使用
CGContextSetTextPosition
告诉核心图形在何处绘制每条线。如果要确定原始字符串中的哪些字符由每行表示,可以使用
CTLineGetStringRange

由于听起来您对核心文本还不熟悉,请注意其坐标系的原点位于屏幕的左下角,Y轴随着屏幕的上升而增加。UIKit的其余部分使用相反的约定(原点位于左上角,Y轴随着向下移动而增加)。您需要使用
CGContextScaleCTM(context,1,-1)
CGContextTranslateCTM
来纠正这个错误。您可能还需要调用
CGContextSetTextMatrix(context,cgaffinetranformidity)
以按预期呈现文本