SDwebImage实现图片下载-圆角

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
    复制代码

转载于:https://juejin.im/post/5b8f906d6fb9a05d06732649

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值