2012-05-04 3 views
2

kCTParagraphStyleSpecifierParagraphSpacingに依存している段落間の間隔を管理するためのアプリケーションがあります。パフォーマンスを編集するために、主コアテキストビューを、必要に応じて描画/再描画されるCTFrameのコレクションとして実装しました。kCTParagraphStyleSpecifierParagraphSpacingはCTFrameの最初の行には適用されません

段落が0以外のkCTParagraphStyleSpecifierParagraphSpacingをCTParagraphStyleSettings属性の1つとして使用すると、その段落がCTFrameの最初の項目である場合、この段落の間隔は無視されます。テキストはフレームセッターに供給されます。

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

答えて

6

CTParagraphStyleSettingで動作を変更できない場合は、バグだと思うか、Appleはその動作が理にかなっていると思っています。とにかく、あなたが望む結果を得るには、CTTypesetterを使用し、の行間隔段落の間隔を処理することをお勧めします。私はちょっと前にanotherに入っているので、CTFrameの実装はかなりバグだと思います。

独自のソリューションを使用する場合、各行の文字カウントを計算するには、CTTypesetterSuggestClusterBreakまたはCTTypesetterSuggestLineBreakが必要です。行の高さはフォントサイズにすることができ、各行を描画するときにlineSpacingを追加します。改行(\ n)文字がある場合は、次の行を描画する前にparagraphSpacingを追加してください。

CTTypesetterとすると、もちろん、改行や字下げを処理する必要があるため、いくつかの問題があります。しかし、これはもっと望ましい結果を得るために私が考えることができる唯一の方法です。

幸運。

関連する問題