1.设置UIImageView分类异步处理图片
-
SDWebImage 的实现远离
-
downloadImage 是SDWebImage 的核心方法
-
图像下载完成之后,会自动保存在沙盒中,文件路径是URL的md5
-
如果沙盒中已经存在缓存的图像,后续使用SD通过URL加载图像,都会加载本地沙盒图像
-
不会发起网络请求,同时回调方法,同样会调用
-
方法还是原来的方法,调用还是原来的调用,不过内部不会再次发起网络请求
-
设置图片的异步设置,并且同一个方法中可以设置圆角半径
func jy_setImage(urlString:String?,placeholerImage:UIImage?,isAvatar:Bool = false){ guard let urlStr = urlString ,let url = URL(string: urlStr) else { image = placeholerImage return } sd_setImage(with: url, placeholderImage: placeholerImage, options: [], progress: nil) {[weak self] ( image, _, _, _) in if isAvatar { self?.image = image?.getRoundedImage(size: (self?.bounds.size)!) } } } 复制代码
-
异步下载图片封装,得到Image
static func jy_downImage(urlString:String?,complention:@escaping (UIImage?, Data?, Error?, Bool)->())->(){ guard let urlStr = urlString ,let url = URL(string: urlStr) else { return } SDWebImageManager.shared().imageDownloader?.downloadImage(with: url, options: [], progress: nil, completed: complention) } 复制代码
2.修复图片拉伸,压缩影响性能
-
根据尺寸重新绘图
-
设置尺寸
-
开启图像上下文
-
绘图,指定固定区域
-
取得结果
-
关闭上下文
let rect = CGRect(origin: CGPoint(), size: size) UIGraphicsBeginImageContextWithOptions(size, true, 0) aimage.draw(in: rect) let result = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return result 复制代码
-
设置圆角图片
-
设置区域
-
开启图像上下文
-
背景颜色填充,填充整个区域
-
设置路径,设置裁剪
-
开始绘图,指定固定区域
-
设置边线,颜色填充,边线宽度,填充
-
取得结果
-
关闭上下文
let rect = CGRect(origin: CGPoint(), size: size) UIGraphicsBeginImageContextWithOptions(size, true, 0) backGroudColor?.setFill() UIRectFill(rect) let path = UIBezierPath(ovalIn: rect) path.addClip() self.draw(in: rect) UIColor.red.setStroke() path.lineWidth = 2 // 默认是1 path.stroke() let result = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return result 复制代码