在iOS TableViewCell中遇到的奇怪刷新问题

在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的源码,后面再详细解释一遍

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容