話不多說逻澳,直接上代碼講解
在我的項(xiàng)目里闸天,水印文字是大小不同的字體拼接的,所有這里也是對(duì)這種水印文字進(jìn)行的處理斜做。
extension UIImage {
/// 圖片加水印
///
/// - Parameters:
/// - text: 水印完整文字
/// - textColor: 文字顏色
/// - textFont: 文字大小
/// - suffixText: 尾綴文字(如果是nil可以不傳)
/// - suffixFont: 尾綴文字大小(如果是nil可以不傳)
/// - suffixColor: 尾綴文字顏色(如果是nil可以不傳)
/// - Returns: 水印圖片
func drawTextInImage(text: String, textColor: UIColor, textFont: UIFont,suffixText: String?, suffixFont: UIFont?, suffixColor: UIColor?) -> UIImage {
// 開啟和原圖一樣大小的上下文(保證圖片不模糊的方法)
UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)
// 圖形重繪
self.draw(in: CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height))
var suffixAttr: [NSAttributedStringKey: Any] = [NSAttributedStringKey.foregroundColor:textColor, NSAttributedStringKey.font:textFont]
let attrS = NSMutableAttributedString(string: text, attributes: suffixAttr)
// 添加后綴的屬性字符串
if let suffixStr = suffixText {
let range = NSRange(location: text.count - suffixStr.count, length: suffixStr.count)
if suffixFont != nil {
suffixAttr[NSAttributedStringKey.font] = suffixFont
}
if suffixColor != nil {
suffixAttr[NSAttributedStringKey.foregroundColor] = suffixColor
}
attrS.addAttributes(suffixAttr, range: range)
}
// 文字屬性
let size = attrS.size()
let x = (self.size.width - size.width) / 2
let y = (self.size.height - size.height) / 2
// 繪制文字
attrS.draw(in: CGRect(x: x, y: y, width: size.width, height: size.height))
// 從當(dāng)前上下文獲取圖片
let image = UIGraphicsGetImageFromCurrentImageContext()
//關(guān)閉上下文
UIGraphicsEndImageContext()
return image!
}
}
}