UIImageView设置圆形图片的三种方法
//创建UIImageView
UIImageView *imageV = [UIImageView alloc] initWithFrame:CGMake(0,0,100,100)];
[view addSubView:imageV];
如果需要处理的图形比较多,最好利用第二种方法里面的2个方法去实现
1.第一种方法:设置UIImageView的layer的圆角,然后裁剪 (这种方法比较损耗性能)
imageV.layer.cornerRadius = imageV.Frame.size.Width;
imageV.layer.masksToBounds = YES;
2.利用贝塞尔将imageV整个类容画在一个图形上下文中,在图形上下文中画成圆形
给UIImageView空充一个分类,分别实现2个方法
- (void)drawRoundImageToImageView
{
//设置图片上下文的大小
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 1.0);
[[UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:self.bounds.size.width]addClip];
[self drawRect:self.bounds];
self.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
- (void)drawShapeLayerRoundRect
{
UIBezierPath *maskPaht = [UIBezierPath bezierPathWithRoundedRect:self.bounds byRoundingCorners:UIRectCornerAllCorners cornerRadii:self.bounds.size];
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
shapeLayer.frame = self.bounds;
shapeLayer.path = maskPaht.CGPath;
【UIImageView设置圆形图片的三种方法】self.layer.mask = shapeLayer;
}
推荐阅读
- 第6.2章(设置属性)
- 15、IDEA学习系列之其他设置(生成javadoc、缓存和索引的清理等)
- performSelectorOnMainThread:withObject:waitUntilDone:参数设置为NO或YES的区别
- spring|spring boot中设置异步请求默认使用的线程池
- Python绘制小红花
- 圆形菜单
- day|day 28 设置路由表
- flutter设置沉浸式状态栏
- 谷歌/火狐/Safari浏览器设置手机模式浏览
- 自定义dialog在xml设置宽高失效的解决