一般设置图片的圆角,会使用方法 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 )