TextKit在图形上下文中绘制多余的部分

时间:2013-10-21 23:55:44

标签: ios ios7 textkit

我通过自己构建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)];

这似乎是无辜的,但奇怪的事情正在发生:多余的文本(即文本容器大小的文本太多)被绘制为图形上下文顶部的额外线:

enter image description here

我可以通过将绘制的字形范围限制为适合文本容器的范围来解决问题:

NSRange r = [lm glyphRangeForTextContainer:tc];

但我觉得我不应该这样做。我也在UITextView中看到了这个问题(我不是发出绘图调用的那个),所以我有点担心这只是iOS 7的TextKit中的一个错误。

0 个答案:

没有答案