关于离屏渲染的简单总结

离屏渲染是一个常见的性能问题,尤其是对于UITableView和UIScrollView。虽然UIImageView的系统圆角会导致离屏渲染,但其影响相对较小。为了优化,应尽量避免在滚动视图中触发离屏渲染,且不应滥用shouldRasterize属性,因为它可能导致额外的渲染。更好的方法是预先生成并缓存圆角图片,或者使用镂空圆形图片覆盖实现。GitHub上存在如HJCornerRadius、NZCircularImageView等库来帮助解决这个问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近关于离屏渲染问题的文章随处可见,对于一个小白来讲,可能去理解其中的原理是比较困难的。看了很多文章后,我也就是对离屏渲染有一点了解,在此做一个总结,直接说说我们平时应该怎样对待离屏渲染问题。观点基于个人理解水平,如有误区,我真诚地请大牛们指正。

  1. 对于我们通常用到的圆角图片,比如UIImageView这种,使用系统圆角虽然会触发离屏渲染,但是单价相对来说,是可以接受的。
  2. 如果我们希望在滚动视图,例如UITableView、UIScrollView等视图,我们应该尽可能的去避免触发离屏渲染。
  3. 如果我们使用了大量的圆角图片,也应该避免触发离屏渲染。

至于如何避免触发离屏渲染,大致有以下几种可行方案:

  1. 通过设置shouldRasterize = YES,会使视图渲染内容被缓存起来,下次绘制的时候可以直接显示缓存,当然要在视图内容不改变的情况下,其实我们应该把shouldRasterize用在确定不会改变的地方,否则将会导致大量的离屏渲染发生。因为shouldRasterize相当于手动开启了离屏渲染。
  2. 采取预先生成圆角图片,并缓存起来这个方法才是比较好的手段。预处理圆角图片可以在后台处理,处理完毕后缓存起来,再在主线程显示,这就避免了不必要的离屏渲染了。GitHub上有这一类的库:HJCornerRadiusNZCircularImageview
  3. 在图片上面覆盖一个镂空圆形图片的方法可以实现圆形头像效果,这个也是极为高效的方法。缺点就是对视图的背景有要求,单色背景效果就最为理想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值