使用属性字符串时,如何改进UITextView的滚动性能?以下示例代码在iPad 3上导致完全无法接受的性能。
NSMutableParagraphStyle *pStyle = [[NSMutableParagraphStyle alloc] init];
pStyle.lineSpacing = 14.0;
pStyle.lineHeightMultiple = 20;
pStyle.maximumLineHeight = 20.0;
pStyle.minimumLineHeight = 20.0;
UIFont *font = [UIFont systemFontOfSize:20.0];
NSDictionary *attributes = @{ NSFontAttributeName : font, NSParagraphStyleAttributeName : pStyle};
NSMutableAttributedString *newline = [[NSMutableAttributedString alloc] initWithString:@"\n\n"];
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"" attributes:@{}];
for (int paragraph=0; paragraph<300; paragraph++){
for (int word=0; word<100; word++){
[string appendAttributedString:[[NSAttributedString alloc] initWithString:@"text!"]];
}
[string appendAttributedString:newline];
}
[string setAttributes:attributes range:NSMakeRange(0, string.length)];
self.textView.attributedText = string;
我应该提一下,我愿意使用Text Kit,但我不知道从哪里开始确保性能最终确定。此外,这是滚动时在分析器中发生的事情。
答案 0 :(得分:2)
这里有两件事有帮助。
首先,我只需要lineSpacing
样式集。设置任何其他段落参数会导致慢速滚动。
第二个是在[self.textView.layoutManager ensureLayoutForCharacterRange:NSMakeRange(0, self.textView.attributedText.length)];
中致电viewDidAppear:
。否则,当您第一次滚动文档时,它会生涩。