1

我正在使用 CoreText 生成一个包含一系列NSAttributedString' 的 PDF 文档,所以我创建一个CTFrameSetterRef并给它一个覆盖整个页面的框架,然后循环使用CTFrameDraw来绘制文本,检查结果CTFrameGetVisibleStringRange以检测何时开始一个新的页。这很好用,但我怎么知道文本在哪里结束?例如,文本可能会在最后一页停止,我想在下面画一些图像。如何获得文本结束的位置?

CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)notesAttrString);
do {
    CTFrameRef frame = CTFramesetterCreateFrame(framesetter, currentRange, path, NULL);
    if( frame ) {
        CTFrameDraw(frame, context);

        if( currentRange.location < CFAttributedStringGetLength((CFAttributedStringRef)notesAttrString) ) {
             UIGraphicsBeginPDFPage();
        } else {
            complete = YES;
        }
    }
} while( !complete );

(以上代码为说明过程而删减,不完整)

4

1 回答 1

3

您可以使用CTFrameGetLineOrigins并检查最后一行的原点,也CTFramesetterSuggestFrameSizeWithConstraints可以获取整个帧的大小。

于 2012-07-18T13:57:52.223 回答