使用YYLabel優(yōu)化tableview和collectionview滾動流暢性

需求:

?在使用tableview 和 collectionview 展示商品信息的時候,需要顯示富文本信息,由于cell 使用較多的富文本,導(dǎo)致在滾動的時候流暢度不是很理想

優(yōu)化:

通過YYLabel 的異步渲染,大幅提升了滾動流暢性

實現(xiàn):

我們在model類里面創(chuàng)建一個YYTextLayout屬性,通過提前處理這個屬性值,將需要展示的富文本信息緩存到model類中,當對Label 進行賦值時就可以直接賦值而不需要通過計算,減少cell刷新過程中的計算量,

YYLabel創(chuàng)建:

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];

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容