1

iOS 7 Text Kit のクラスの「スタック」を自分で構築し、描画するグリフを要求することで、グラフィックス コンテキストに直接描画しています。これは私のカスタム UIView サブクラスのdrawRect:実装です:

NSLayoutManager* lm = [NSLayoutManager new];
NSTextStorage* ts = 
    [[NSTextStorage alloc] initWithAttributedString:self.attributedText];
[ts addLayoutManager:lm];
NSTextContainer* tc =
    [[NSTextContainer alloc]
        initWithSize:rect.size];
[lm addTextContainer:tc];
tc.lineFragmentPadding = 0;
NSRange r = NSMakeRange(0,lm.numberOfGlyphs);
[lm drawBackgroundForGlyphRange:r atPoint:CGPointMake(0,10)];
[lm drawGlyphsForGlyphRange:r atPoint:CGPointMake(0,10)];

問題ないように見えますが、奇妙なことが起こっています: 余分なテキスト (つまり、テキスト コンテナーのサイズに対してテキストが多すぎる) が、グラフィックス コンテキストの上部に余分な線として描画されています。

ここに画像の説明を入力

描画されるグリフの範囲をテキスト コンテナーに収まるものに制限することで、この問題を回避できます。

NSRange r = [lm glyphRangeForTextContainer:tc];

しかし、私はそれをしなくてもよいと感じています。また、この問題は UITextView (描画呼び出しを発行するのは私ではありません) でも見られたので、これは iOS 7 の TextKit の単なるバグではないかと少し心配しています。

4

0 に答える 0