最近做了
UILabel
和YYLabel
的FPS性能测试,结论就是UILabel
在主线程的渲染太耗时了,尤其在中文和Emoji较多的场景。然后,由于
YYLabel
过于复杂,且与UILabel
的运行效果存在不一致(如行距),还有较多的issues未得到解决,于是自己做了一个极其简单的异步渲染的WJAsyncLabel
,可以看到排版与UILabel
的运行效果是一致的。异步的原理与
YYLabel
基本一致,都是异步绘制生成Image
对象,传递给CALayer
。weakSelf.layer.contents = (__bridge id _Nullable)(image.CGImage);
绘制是直接基于
-[NSAttributedString drawInRect:]
,保持与原生一致的效果。更详细的代码与图文介绍请前往Github。
Loading Comments...