tablviewcell中圆角处理 离屏渲染问题
来源:互联网 发布:淘宝店招图片 编辑:程序博客网 时间:2024/06/05 02:24
@implementation TableViewCell
- (void)awakeFromNib
{
[superawakeFromNib];
self.image1.layer.cornerRadius = self.image1.frame.size.width/2.0;
self.image1.layer.masksToBounds = YES;
self.image2.layer.cornerRadius = self.image2.frame.size.width/2.0;
self.image2.layer.masksToBounds = YES;
self.image3.layer.cornerRadius = self.image3.frame.size.width/2.0;
self.image3.layer.masksToBounds = YES;
self.image4.layer.cornerRadius = self.image4.frame.size.width/2.0;
self.image4.layer.masksToBounds = YES;
}
当一个cell有4个图片都进行圆角处理的话,帧数下降很快,
Off-Screen Rendering
离屏渲染,指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。由上面的一个结论视图和圆角的大小对帧率并没有什么卵影响,数量才是伤害的核心输出啊。可以知道离屏渲染耗时是发生在离屏这个动作上面,而不是渲染。为什么离屏这么耗时?原因主要有创建缓冲区和上下文切换。创建新的缓冲区代价都不算大,付出最大代价的是上下文切换。
上下文切换
上下文切换,不管是在GPU渲染过程中,还是一直所熟悉的进程切换,上下文切换在哪里都是一个相当耗时的操作。首先我要保存当前屏幕渲染环境,然后切换到一个新的绘制环境,申请绘制资源,初始化环境,然后开始一个绘制,绘制完毕后销毁这个绘制环境,如需要切换到On-Screen Rendering或者再开始一个新的离屏渲染重复之前的操作。 下图描述了一次mask的渲染操作。
那么如何应对这个问题呢?不要在滚动视图使用cornerRadius或者mask。如果你非要作死怎么办呢?那么这样也可以拯救你:
self.layer.shouldRasterize = YES;
self.layer.rasterizationScale = [UIScreen mainScreen].scale;
这样大部分情况下可以马上挽救你的帧数在55帧每秒以上。shouldRasterize = YES会使视图渲染内容被缓存起来,下次绘制的时候可以直接显示缓存,当然要在视图内容不改变的情况下。
还是采取预先生成圆角图片,并缓存起来这个方法才是比较好的手段。预处理圆角图片可以在后台处理,处理完毕后缓存起来,再在主线程显示,这就避免了不必要的离屏渲染了。
另外也有在图片上面覆盖一个镂空圆形图片的方法可以实现圆形头像效果,这个也是极为高效的方法。缺点就是对视图的背景有要求,单色背景效果就最为理想。
- tablviewcell中圆角处理 离屏渲染问题
- tablviewcell中圆角处理 离屏渲染问题
- 关于tablviewcell删除的使用及子控件错位问题的处理
- 圆角等离屏渲染问题
- 处理vue渲染前的显示问题
- opengl fbo离屏渲染,处理Android截屏卡顿太久。
- 动态计算tablviewcell高度
- 如何处理max透明树叶贴图渲染白边问题
- EasyUI tabs update 方法后控件无法渲染问题处理
- OpenGL离屏渲染
- cocos2dx 离屏渲染
- 离屏渲染
- iOS 【离屏渲染】
- opengl离屏渲染
- 离屏渲染
- iOS 离屏渲染
- 离屏渲染(Pbuffer)
- tablviewcell和webview自适应高度
- Android通用流行框架大全
- 天梯-明明的随机数
- mac mysql完全卸载
- MyBatis 多参数,in顺序查询
- Android开发记录20-获取缓存大小和清除缓存功能
- tablviewcell中圆角处理 离屏渲染问题
- js 正则判断 汉字、数字、英文的格式
- 2016-05-11安卓四大组件 内容提供者contentprovider +数据库+解析者
- IOS行货自动打包
- erlang 运算符
- 使用CocoaPods被卡住:Updating local specs repositories 解决方案
- 映射其他盘到C盘
- 《每秒处理10万订单乐视集团支付架构》学有所得
- c++分离式编译模型