优化tableView中出现的图片切圆角导致离屏渲染(减少内存消耗)
2017-12-28 17:23
417 查看
使用CAShapeLayer和UIBezierPath设置圆角
对于方案2需要解释的是:
CAShapeLayer继承于CALayer,可以使用CALayer的所有属性值;
CAShapeLayer需要贝塞尔曲线配合使用才有意义(也就是说才有效果)
使用CAShapeLayer(属于CoreAnimation)与贝塞尔曲线可以实现不在view的drawRect(继承于CoreGraphics走的是CPU,消耗的性能较大)方法中画出一些想要的图形
CAShapeLayer动画渲染直接提交到手机的GPU当中,相较于view的drawRect方法使用CPU渲染而言,其效率极高,能大大优化内存使用情况。
总的来说就是用CAShapeLayer的内存消耗少,渲染速度快
1 2 3 4 5 6 7 8 9 10 | UIImageView *imageView=[[UIImageViewalloc]initWithFrame:CGRectMake(100,100,100,100)]; imageView.image=[UIImageimageNamed:@"myImg"]; UIBezierPath *maskPath=[UIBezierPathbezierPathWithRoundedRect:imageView.boundsbyRoundingCorners:UIRectCornerAllCornerscornerRadii:imageView.bounds.size]; CAShapeLayer *maskLayer=[[CAShapeLayeralloc]init]; //设置大小 maskLayer.frame=imageView.bounds; //设置图形样子 maskLayer.path=maskPath.CGPath; imageView.layer.mask=maskLayer; [self.viewaddSubview:imageView]; |
CAShapeLayer继承于CALayer,可以使用CALayer的所有属性值;
CAShapeLayer需要贝塞尔曲线配合使用才有意义(也就是说才有效果)
使用CAShapeLayer(属于CoreAnimation)与贝塞尔曲线可以实现不在view的drawRect(继承于CoreGraphics走的是CPU,消耗的性能较大)方法中画出一些想要的图形
CAShapeLayer动画渲染直接提交到手机的GPU当中,相较于view的drawRect方法使用CPU渲染而言,其效率极高,能大大优化内存使用情况。
总的来说就是用CAShapeLayer的内存消耗少,渲染速度快
相关文章推荐
- 分享一个实现图片圆角,圆的自定义的ImageView,尽可能少的减少内存消耗。
- 安卓开发,listview的优化,减少内存消耗,复用convertView、ViewHolder和分页加载
- tableView 获取网络图片,并且设置为圆角(优化,fps)
- UIImageView设置圆角不触发离屏渲染的方法
- TableView的性能优化-主要针对滑动时候出现的卡顿现象
- iOS-OC-tableview SDWebImage加载多张图片内存警告(received memory warning)
- iOS开发 关于tableView加载图片时出现卡顿时的解决办法
- 关于WebView因图片太大导致出现横向滚动条问题
- IOS(swift)-scrollView(tableView) ·图片加载逻辑的优化
- tableview加载图片优化
- 优化tableView性能(针对滑动时出现卡的现象)
- tableView 滚动 cell 中设置圆角头像性能优化的问题
- 内存的消耗最少,而且渲染最快的显示圆角
- 优化SQL执行:如果提供数据库执行效率或者减少内存消耗
- 使用ExpandableListView以及如何优化view的显示减少内存占用
- Android使用BitmapShader图形渲染实现圆形、圆角和椭圆自定义图片View
- 优化tableView性能(针对滑动时出现卡的现象)
- 优化tableView滑动时出现卡的现象
- MyEclipse 8 优化 加速 减少内存消耗
- iOS---tableview加载图片的时候的优化之lazy(懒加载)模式and异步加载模式