如何高性能的给 UIImageView 加个圆角?
2017-09-01 22:34
453 查看
不好的解决方案
使用下面的方式会
正确的解决方案:使用绘图技术
还有一种方案:使用了贝塞尔曲线"切割"个这个图片, 给UIImageView 添加了的圆角,其实也是通过绘图技术来实现的
使用下面的方式会
强制Core Animation提前渲染屏幕的离屏绘制, 而离屏绘制就会给性能带来负面影响,会有卡顿的现象出现
self.view.layer.cornerRadius = 5; self.view.layer.masksToBounds = YES;
正确的解决方案:使用绘图技术
- (UIImage *)circleImage { // NO代表透明 UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0); // 获得上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 添加一个圆 CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height); CGContextAddEllipseInRect(ctx, rect); // 裁剪 CGContextClip(ctx); // 将图片画上去 [self drawInRect:rect]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); // 关闭上下文 UIGraphicsEndImageContext(); return image; }
还有一种方案:使用了贝塞尔曲线"切割"个这个图片, 给UIImageView 添加了的圆角,其实也是通过绘图技术来实现的
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; imageView.center = CGPointMake(200, 300); UIImage *anotherImage = [UIImage imageNamed:@"image"]; UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, 1.0); [[UIBezierPath bezierPathWithRoundedRect:imageView.bounds cornerRadius:50] addClip]; [anotherImage drawInRect:imageView.bounds]; imageView.image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); [self.view addSubview:imageView]; 下面这篇博客写的非常不错,推荐看看:对于图片的处理 http://www.jianshu.com/p/4e22c6ac114d
相关文章推荐
- 如何高性能的给UIImageView加个圆角?(不准说layer.cornerRadius!)
- 如何高性能的给UIImageView加个圆角?(不准说layer.cornerRadius!)
- 如何高性能的给UIImageView加个圆角?(不准说layer.cornerRadius!)
- 如何高性能的给UIImageView加个圆角
- 教你如何将UIImageView视图中的图片变成圆角
- 如何让UIImageView具有像UIButton一样的点击效果
- UIImageView不能设置圆角的解决方法
- UIView,UIImageView支持顶端圆角的方式
- 如何实现TextureView或者SurfaceView 预览框为圆角
- IOS UIImageview 添加边框 或者设置成圆角
- 【代码笔记】给UIImageView加上圆角效果
- UIImageView圆角实现
- 如何把图片UIImageView某个区域变成透明
- UIImageView添加圆角
- UIImageView不能设置圆角的解决方法
- SDWebImage 如何为 UIImageView 添加图片
- UIImageView 圆角设置
- iOS UIImageView 圆角
- UIImageView设置圆角不触发离屏渲染的方法
- 如何在UIimageview里显示一张图片里的某一部分