我有一个泡泡形状的图像,我希望在图像的中间添加文字,所以我尝试使用UIGraphicsBeginImageContextWithOptions来重绘图像。
代码如下:
let imageSize = CGSize(width: 40, height: 40)
// the rect in which the image will be drawn in
let imageRect = CGRect(origin: CGPoint.zero, size: imageSize)
UIGraphicsBeginImageContextWithOptions(imageSize, true, 1.0)
// begining drawing things
// first, we draw the image in the specified rect
image.draw(in: imageRect)
let attributes = [ NSAttributedStringKey.foregroundColor: UIColor.red,
NSAttributedStringKey.font: UIFont.boldSystemFont(ofSize: 20)]
let text = "55"
let size = text.size(withAttributes: attributes)
let rect = CGRect(x: 20 - size.width / 2, y: 20 - size.height / 2, width: size.width, height: size.height)
text.draw(in: rect, withAttributes: attributes)
let newImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return newImage
蓝色是原始图像,黑色是重新绘制的图像。任何人都知道如何将图像绘制为原始图像?
谢谢!
答案 0 :(得分:-1)
您需要将false
而不是true
传递给opaque
函数调用的第二个参数(UIGraphicsBeginImageContextWithOptions
参数)。
UIGraphicsBeginImageContextWithOptions(imageSize, false, 1.0)
您还应该将0
作为第三个参数(scale
)传递,以便缩放图像以匹配当前设备的屏幕比例。