我有一个包含大量文本的UITextView。 iPhone 4,5和6上的滚动大部分是平滑的,但是在6 Plus上有很多口吃。 (我相信这是因为6 Plus的像素数量不足以推动它)。我注意到,一旦我滚过一个区域,如果我向后滚动它,滚动就会很顺畅;已经为该地区执行了布局,处理器不需要做太多工作。我想在到达该地区之前强制进行布局。这就是我试过的:
textView.layoutManager.ensureLayoutForTextContainer(textView.textContainer)
这似乎根本没有做任何事情。第一次通过区域时滚动仍然不平滑,而之前和之后的日志语句的差异为.00014秒。为了确保我真的得到了正确的文本容器,我也试过了:
textView.layoutManager.ensureLayoutForTextContainer(textView.layoutManager.textContainers[0] as NSTextContainer)
这也没有区别。
我需要做些什么来强制文本容器中所有文本的布局?
非常感谢任何帮助。
感谢。
已编辑添加: 回答TheCodingArt的问题:就布局管理器而言,我没有做任何异国情调。这是我的设置代码:
var textStorage = NSTextStorage()
var layoutManager = NSLayoutManager()
textStorage.addLayoutManager(layoutManager)
var textContainer = NSTextContainer(size: textContainerSize)
layoutManager.addTextContainer(textContainer)
textView = UITextView(frame: CGRectMake(0, 0, textViewWidth, textViewHeight), textContainer: textContainer)
textView.showsHorizontalScrollIndicator = false
textView.showsVerticalScrollIndicator = false
textView.backgroundColor = UIColor.clearColor();
textView.editable = false;
textView.selectable = true;
textView.scrollsToTop = false
self.view.addSubview(textView)
我从第一个回答这个问题的过程中学会了实例化和添加文本容器和文本存储的漏洞: Scroll to bottom of UITextView erratic in iOS 7 ......并且它确实有所帮助,但对于6 Plus来说还不够。
稍后,我向其添加文字:
textStorage.appendAttributedString(attribStr)