1

CoreText を使用して一連の を含む PDF ドキュメントをNSAttributedString作成しているので、 を作成して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 に答える