我正在尝试构建一个具有 UITextView 的表格视图单元格。为了重用这个表格视图单元格,我为布局管理器设置了一个新的文本存储。但是将布局管理器添加到新的文本存储中并不会改变文本视图的文本存储。
布局管理器、文本容器、文本视图设置如下:
_myLayoutManager = [[NSLayoutManager alloc] init];
_myTextContainer = [[NSTextContainer alloc] init];
[_myLayoutManager addTextContainer:_myTextContainer];
_myTextView = [[UITextView alloc] initWithFrame:self.bounds
textContainer:_myTextContainer];
当我“配置”表格视图单元格时,我将布局管理器添加到新的文本存储中:
MyTextStorage *textStorage = ...
[textStorage addLayoutManager:self.myLayoutManager];
到目前为止,这有效,新文本将正确显示。但是当我重用单元格(将布局管理器添加到另一个文本存储)并获取文本视图的大小时,通过...</p>
[self.myTextView systemLayoutSizeFittingSize:...]
… 尺寸错误。在查看了文本视图的属性后,我发现它仍然指向错误的文本存储。
self.myLayoutManager.textStorage -> <new text storage>
self.myTextView.textStorage -> <old text storage>
这感觉真的很奇怪。我是否需要重新设置整个堆栈(布局管理器、文本容器、文本视图)?
如果是,我将需要启动一个新的文本视图并更新布局约束,这将非常昂贵。