iOS图片的性能优化

一般设置图片的圆角,会使用方法 layer.cornerRadius,但其实这种方法很消耗性能,尤其是复杂的view。
可以通过绘制优化性能

/// 拉伸image
///
/// - Parameters:
///   - image: image
///   - size: size
///   - backgroundColor: backgroundColor
/// - Returns: UIImage
func stretchImage(image: UIImage, size: CGSize, backgroundColor: UIColor?) -> UIImage? {
    
    let rect = CGRect(origin: CGPoint(), size: size)
    
    // 1.图像的上下文 - 内存中开辟一个地址,跟屏幕无关
    /**
     size: 绘制的尺寸
     opaque: false 透明 、true 不透明
     scale: 屏幕分辨率,默认1.0,图像质量不好,可以指定0,会选择当前设备的屏幕分辨率
     */
    UIGraphicsBeginImageContextWithOptions(rect.size, false, 0)
    
    // 2.背景填充
    backgroundColor?.setFill()
    UIRectFill(rect)
    
    // 3.实例化一个圆形的路径
    let path = UIBezierPath(ovalIn: rect)
    //   进行路径裁剪 - 后续的绘图,都会出现在圆形路径内部,外部的全部干掉
    path.addClip()
    
    // 4.绘图 drawInRect 就是在指定区域内拉伸屏幕
    image.draw(in: rect)
    
    // 5.绘制内切的圆形
    UIColor.darkGray.setStroke()
    path.lineWidth = 3
    path.stroke()
    
    // 6.取得结果
    let resultImage = UIGraphicsGetImageFromCurrentImageContext()
    
    // 7.关闭上下文
    UIGraphicsEndImageContext()
    
    return resultImage
}

demo地址:(http://git.oschina.net/maxiao1118/TuPianXingNenYouHua )

你可能感兴趣的:(iOS图片的性能优化)