开发中,经常会遇到一时找不到合适尺寸的图片的情况.
这时,我们可以用"文字图片"来临时占位.
Just Show Code
UIImage的类方法扩展
class func image(_ text:String,size:(CGFloat,CGFloat),backColor:UIColor=UIColor.orange,textColor:UIColor=UIColor.white,isCircle:Bool=true) -> UIImage?{
// 过滤空""
if text.isEmpty { return nil }
// 取第一个字符(测试了,太长了的话,效果并不好)
let letter = (text as NSString).substring(to: 1)
let sise = CGSize(width: size.0, height: size.1)
let rect = CGRect(origin: CGPoint.zero, size: sise)
// 开启上下文
UIGraphicsBeginImageContext(sise)
// 拿到上下文
guard let ctx = UIGraphicsGetCurrentContext() else { return nil }
// 取较小的边
let minSide = min(size.0, size.1)
// 是否圆角裁剪
if isCircle {
UIBezierPath(roundedRect: rect, cornerRadius: minSide*0.5).addClip()
}
// 设置填充颜色
ctx.setFillColor(backColor.cgColor)
// 填充绘制
ctx.fill(rect)
let attr = [ NSForegroundColorAttributeName : textColor, NSFontAttributeName : UIFont.systemFont(ofSize: minSide*0.5)]
// 写入文字
(letter as NSString).draw(at: CGPoint(x: minSide*0.25, y: minSide*0.25), withAttributes: attr)
// 得到图片
let image = UIGraphicsGetImageFromCurrentImageContext()
// 关闭上下文
UIGraphicsEndImageContext()
return image
}