想要给图片添加文字水印或者注释,我们需要实现在UIImage上写字的功能。
1,效果图如下:
(在图片左上角和右下角都添加了文字。)
2,为方便使用,我们通过扩展UIImage类来实现添加水印功能
(文字大小,文字颜色,背景色,位置,边距都可以设置)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
//--- UIImageExtension.swift --- import UIKit
extension UIImage {
//水印位置枚举
enum WaterMarkCorner {
case TopLeft
case TopRight
case BottomLeft
case BottomRight
}
//添加水印方法
func waterMarkedImage(waterMarkText: String , corner: WaterMarkCorner = . BottomRight ,
margin: CGPoint = CGPoint (x: 20, y: 20), waterMarkTextColor: UIColor = UIColor .whiteColor(),
waterMarkTextFont: UIFont = UIFont .systemFontOfSize(20),
backgroundColor: UIColor = UIColor .clearColor()) -> UIImage {
let textAttributes = [ NSForegroundColorAttributeName :waterMarkTextColor,
NSFontAttributeName :waterMarkTextFont]
let textSize = NSString (string: waterMarkText).sizeWithAttributes(textAttributes)
var textFrame = CGRectMake (0, 0, textSize.width, textSize.height)
let imageSize = self .size
switch corner{
case . TopLeft :
textFrame.origin = margin
case . TopRight :
textFrame.origin = CGPoint (x: imageSize.width - textSize.width - margin.x, y: margin.y)
case . BottomLeft :
textFrame.origin = CGPoint (x: margin.x, y: imageSize.height - textSize.height - margin.y)
case . BottomRight :
textFrame.origin = CGPoint (x: imageSize.width - textSize.width - margin.x,
y: imageSize.height - textSize.height - margin.y)
}
// 开始给图片添加文字水印
UIGraphicsBeginImageContext (imageSize)
self .drawInRect( CGRectMake (0, 0, imageSize.width, imageSize.height))
NSString (string: waterMarkText).drawInRect(textFrame, withAttributes: textAttributes)
let waterMarkedImage = UIGraphicsGetImageFromCurrentImageContext ()
UIGraphicsEndImageContext ()
return waterMarkedImage
}
} |
3,使用样例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import UIKit
class ViewController : UIViewController {
@IBOutlet weak var imageView: UIImageView !
override func viewDidLoad() {
super .viewDidLoad()
//使用链式调用方法,给图片添加两条水印
imageView.image = UIImage (named: "bg" )?
.waterMarkedImage( "做最好的开发者知识平台" )
.waterMarkedImage( "hangge.com" , corner: . TopLeft ,
margin: CGPoint (x: 20, y: 20), waterMarkTextColor: UIColor .blackColor(),
waterMarkTextFont: UIFont .systemFontOfSize(45), backgroundColor: UIColor .clearColor())
}
override func didReceiveMemoryWarning() {
super .didReceiveMemoryWarning()
}
} |