使用YYLabel优化tableview和collectionv

2018-09-29  本文已影响50人  kwalter

需求:

 在使用tableview 和 collectionview 展示商品信息的时候,需要显示富文本信息,由于cell 使用较多的富文本,导致在滚动的时候流畅度不是很理想

优化:

通过YYLabel 的异步渲染,大幅提升了滚动流畅性

实现:

我们在model类里面创建一个YYTextLayout属性,通过提前处理这个属性值,将需要展示的富文本信息缓存到model类中,当对Label 进行赋值时就可以直接赋值而不需要通过计算,减少cell刷新过程中的计算量,

YYLabel创建:

YYLabel *title = [YYLabel new];

title.displaysAsynchronously = YES; //开启异步渲染

title.ignoreCommonProperties = YES; //忽略属性

title.textLayout = model.titleLayout; //直接取 YYTextLayout

NSMutableAttributedString* string = [NSMutableAttributedString attachmentStringWithEmojiImage:IMAGE_NAMED(@"xjRedPicket") fontSize:11];

NSMutableAttributedString* attr = [[NSMutableAttributedString alloc] initWithString:F(@"¥%@+", self.price)];        

[attr appendAttributedString:string];        

[attr appendString:F(@" %@", self.consume)];        

[attr addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:kFitWithWidth(15)] range:NSMakeRange(0, attr.length)];    

[attr addAttribute:NSForegroundColorAttributeName value:HEXCOLOR(0xFE3F56) range:NSMakeRange(0, attr.length)];                 

YYTextContainer* priceContainer = [YYTextContainer containerWithSize:CGSizeMake(KScreenWidth/2-kFitWithWidth(30), CGFLOAT_MAX)];        

_priceLayout = [YYTextLayout layoutWithContainer:priceContainer text:attr];

上一篇 下一篇

猜你喜欢

热点阅读