在TableView的Cell中用到了YYLabel的富文本,然后在刷新的时候页面总是会闪一下。
IMG_E9F10EC08145-1.jpeg
一直以为是tableView刷新的问题导致的,最后发现是YYLabel
中对富文本赋值导致的。
这是之前出问题的代码:
[[RACObserve(self, model) ignore:nil] subscribeNext:^(id _Nullable x) {
((YYLabel *)self.detailLab).attributedText = [LHTemplateCellViewModel buildDetailTextWithModel:x];
}];
[[self rac_prepareForReuseSignal] subscribeNext:^(RACUnit * _Nullable x) {
@strongify(self);
self.iconView.image = [UIImage imageNamed:@"template_placehold"];
((YYLabel *)self.detailLab).attributedText = nil;
((YYLabel *)self.detailLab).text = nil;
}];
在YYLabel中是基于CoreText 进行绘制的一个框架,所有的元素是绘制在Layer上的。
在清除富文本内容,这个是个异步操作,如果cell被复用,在重新赋值的时候,这里的异步操作会导致在label先显示了复用前的text内容,然后更新为新的内容,所以这里总是会闪一下。
这里又复习了一遍YYLabel的源码,后面再详细解释一遍
网友评论