聊天流显示性能提高
前言:徽章是一个自定义view,生成相关的model后,赋值给view,然后把view放入YYLabel中,最后在Tableview展示。
之前做法是徽章是一个自定义view,这个view 上有五六个子view,
比如叫 PTVFansBadgeItemView
生成这个view后,赋值 model
PTVFansBadgeItemView *itemView = [[PTVFansBadgeItemView alloc] initWithFrame:CGRectMake(0, 0, sizeTemp.width, sizeTemp.height)];
itemView.shouldInSmall = YES;
itemView.badgeItem = itemInfo;
然后把这个view加入到YYLabel中。(使用 yy_attachmentStringWithContent
)把itemView
加入YYLabel. 测试一下极限方案,每个cell 中生成几十个这种view,会有卡顿现象。猜测是布局各种相关的,因为YYLabel中自定义view只能在主线程中添加到相关位置上。
优化:
PTVFansBadgeItemView *itemView = [[PTVFansBadgeItemView alloc] initWithFrame:CGRectMake(0, 0, sizeTemp.width, sizeTemp.height)];
itemView.shouldInSmall = YES;
itemView.badgeItem = itemInfo;
UIImage *image = [itemView re_screenshot];
使用截图方法,对自定义view进行截图,生成一个image, 然后把这个image加入到YYLabel中。
这里 re_screenshot
方法是一个分类,作用就是给UIView截图,就不贴代码了,YYKit 中 UIView 的分类有更完美的实现。
很多地方都可以使用截图集中渲染方法提高性能。可以多尝试