我目前被困在一堵大墙上......
我使用包含UITableViewCell
个自定义UITextView
图片的自定义NSTextAttachment
。
每个NSTextAttachment
都会覆盖
- (CGRect)attachmentBoundsForTextContainer:(NSTextContainer *)textContainer proposedLineFragment:(CGRect)lineFrag glyphPosition:(CGPoint)position characterIndex:(NSUInteger)charIndex;
和
- (UIImage *)imageForBounds:(CGRect)imageBounds
textContainer:(NSTextContainer *)textContainer
characterIndex:(NSUInteger)charIndex;
来自NSTextAttachmentContainer
协议。
此处的目标是显示不同大小的图像,并使边界适应可用空间。
我还需要在缓存之前使用专用单元格上的sizeThatFits
语句计算单元格高度。
直到今天,当我试图列出一系列特定内容时,一切正常。
当旧单元格出列以显示全新单元格时,我的应用程序只会冻结[_textView setAttributedString:myAttributedText];
语句(堆栈中的[NSATSTypesetter beginLineWithGlyphAtIndex:]
)。
我只是尝试了一切,以避免每次重建细胞(实际上都有效)。
这是我发现的:
NSTextAttachment
边界(并保持单元格高度)似乎使错误消失而没有任何逻辑...... - (void)prepareForReuse
方法并尝试重置UITextView
状态,也是徒劳。UITextView
似乎可以解决问题。有什么想法吗?我是否需要了解有关出列系统或NSTextAttachmentContainer
协议的重要信息?
非常感谢提前。
修改 我发现解决这个问题的唯一方法就是:
- (void)prepareForReuse
{
[super prepareForReuse];
// Reset text
_contentTextView.attributedText = nil;
[_contentTextView sizeToFit];
}
sizeToFit
声明非常重要!