美文网首页
UIImage 扩展

UIImage 扩展

作者: 白色天空729 | 来源:发表于2018-05-21 23:01 被阅读10次

    调用:

     let imgV = UIImageView.init(frame: CGRect.init(x: 0, y: 100, width: 100, height: 100))
            
            let newImg = #imageLiteral(resourceName: "zzz").redrawOvalImage(size: CGSize.init(width: 30, height: 30), bgColor: UIColor.white)
            imgV.image = newImg
            
            view.addSubview(imgV)
    
    extension UIImage {
        /// 重新绘制圆形图片
        ///
        /// - Parameters:
        ///   - image: 原图
        ///   - size: 绘制尺寸
        ///   - bgColor: 裁剪区域外的背景颜色
        /// - Returns: 新图
        func redrawOvalImage(size: CGSize?, bgColor: UIColor?) -> UIImage? {
            
            // 绘制区域
            let rect = CGRect(origin: CGPoint(), size: size ?? CGSize.zero)
            
            // 开启图形上下文 size:绘图的尺寸 opaque:不透明 scale:屏幕分辨率系数,0会选择当前设备的屏幕分辨率系数
            UIGraphicsBeginImageContextWithOptions(rect.size, true, 0)
            
            // 背景颜色填充
            bgColor?.setFill()
            UIRectFill(rect)
            
            // 圆形路径
            let path = UIBezierPath(ovalIn: rect)
            
            // 进行路径裁切,后续的绘图都会出现在这个圆形路径内部
            path.addClip()
            
            // 绘制图像 在指定区域拉伸并绘制
            draw(in: rect)
            
            // 从图形上下文获取图片
            let result = UIGraphicsGetImageFromCurrentImageContext()
            
            // 关闭上下文
            UIGraphicsEndImageContext()
            
            return result
        }
    }
    
    

    相关文章

      网友评论

          本文标题:UIImage 扩展

          本文链接:https://www.haomeiwen.com/subject/tircjftx.html