最近在开发需要给图片切圆角,正常来说是按照固定的大小来进行裁剪圆角,但是由于业务原因,图片无法提供固定的大小而且要保证在固定的区域完全展示,所以就有了以下的探索。
确定思路:
1.获取调整后的实际图片尺寸
2.根据图片尺寸调整View的大小
3.对View进行裁剪
1.获取调整后的实际图片尺寸
根据网上的答案,有一段代码可以获取到调整后实际图片尺寸
float widthRatio = imageView.bounds.size.width / imageView.image.size.width;
float heightRatio = imageView.bounds.size.height / imageView.image.size.height;
float scale = MIN(widthRatio, heightRatio);
float imageWidth = scale * imageView.image.size.width;
float imageHeight = scale * imageView.image.size.height;
这里要注意的点是这里网络的image是要加载完后才能获取到大小。
2.根据图片尺寸调整View的大小
这里我加载网络图片用的是FLAnimatedImageView(用SDWebImage也一样),因为要加载完后进行操作,所以调用
- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock
这个方法,在回调里面进行裁剪处理
3.对View进行裁剪
在block里面调用步骤一的代码,最好把里面的Image换成回调的Image,然后重新对ImageView的大小坐标进行调整,并对ImageView进行正常切角即可。
网友评论