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

2024-03-03  本文已影响0人  高浩浩浩浩浩浩

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

上一篇下一篇

猜你喜欢

热点阅读