1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > iOS 在不使用cornerRadius的情况下 设置图像为圆角

iOS 在不使用cornerRadius的情况下 设置图像为圆角

时间:2023-10-02 14:29:05

相关推荐

iOS 在不使用cornerRadius的情况下 设置图像为圆角

在OC中,裁减图像为圆角,在CALayer中有两个很重要的属性,是会经常被连带一起调用的,(cornerRadius &masksToBounds)

如以下代码:

// 创建 UIImageView --> iconViewUIImageView *iconView = [[UIImageView alloc]initWithFrame:CGRectMake(37, 150, 300, 300)];// 设置图片iconView.image = [UIImage imageNamed:@"photo"];// 添加到视图view[self.view addSubview:iconView];iconView.layer.cornerRadius = 150;iconView.layer.masksToBounds = YES;

这样设置是可以立马将想要的图片裁切为圆角,但是cornerRadius是在主线程时时渲染的,性能非常糟糕,除非在设置一张图片的时候使用,所以不建议使用。

而我接下来要推荐的一种设置方式,是使用路径裁切的方式--> UIBezierPath,实例代码如下:

// 创建 UIImageView --> iconViewUIImageView *iconView = [[UIImageView alloc]initWithFrame:CGRectMake(37, 150, 300, 300)];// 设置图片iconView.image = [UIImage imageNamed:@"photo"];// 添加到视图view[self.view addSubview:iconView];// 开启上下文UIGraphicsBeginImageContextWithOptions(iconView.image.size, NO, 0.0);// 获取绘制圆的半径、宽、高 的一个区域CGFloat radius = MIN(iconView.image.size.width, iconView.image.size.height) * 0.5;CGFloat width = radius * 2;CGFloat height = width;CGRect rect = CGRectMake(0, 0, width, height);// 使用 UIBezierPath 路径裁切,注意:先设置裁切路径,再绘制图像UIBezierPath *bezierPath = [UIBezierPath bezierPathWithOvalInRect:rect];// 添加到裁切路径[bezierPath addClip];// 将图片绘制到裁切好的区域内[iconView.image drawInRect:rect];// 从上下文获取当前绘制成圆形的图片UIImage *resImage = UIGraphicsGetImageFromCurrentImageContext();// 关闭上下文UIGraphicsEndImageContext();// 赋值给 iconView.imageiconView.image = resImage;

这样就绘制出了圆角图像了。以上内容分享给大家,欢迎指导补充!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。