3

kCTParagraphStyleSpecifierParagraphSpacing に大きく依存して段落間の間隔を管理するアプリがありますが、これはテキストの本文全体で変化する可能性があります。編集パフォーマンスのために、必要に応じて描画/再描画される CTFrames のコレクションとしてメインの Core Text ビューを実装しました。

段落が CTParagraphStyleSettings 属性の 1 つとしてゼロ以外の kCTParagraphStyleSpecifierParagraphSpacing を使用する場合、その段落が CTFrame の最初の項目である場合、この段落間隔は無視されることがわかりました。フレームセッター。

印刷用の PDF に描画している場合、この動作は理にかなっていると思いますが、テキストを単一のスクロール可能で連続したテキスト ブロックとして表示しようとすると、問題が発生します。この問題を回避する方法はありますか?

4

1 に答える 1

6

で動作を変更できない場合はCTParagraphStyleSetting、バグだと思います。または、Apple は動作が理にかなっていると考えています。とにかく、あなたが望む結果を得るには、 lineSpacingparagraphSpacingCTTypesetterを自分で使用して処理するのが最善の方法だと思います. 少し前に別のものに出くわしたので、実装にはかなりバグがあると思います。CTFrame

独自のソリューションを展開するには、各行の文字数を計算する必要がありますCTTypesetterSuggestClusterBreakCTTypesetterSuggestLineBreak行の高さはフォント サイズにすることができ、各行を描画するときに lineSpacing を追加します。改行 (\n) 文字に遭遇した場合は、次の行を描画する前に段落間隔を追加します。

を使用CTTypesetterすると、物事はより制御しやすくなりますが、もちろん、改行やインデントを処理する必要があるため、いくつかの問題も追加されます。しかし、これは、より望ましい結果を得るために私が考えることができる唯一の方法です.

幸運を。

于 2012-05-27T02:02:15.067 に答える