我正试图在uiimage中设置一个透明的洞这是我到目前为止所发现的:
let hole = CGRect(x: 0, y: 0, width: 50, height: 50)
let context = UIGraphicsGetCurrentContext()!
context.clear(hole)
myImage.image = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
但我在let context = UIGraphicsGetCurrentContext()!
我知道我需要在某处定义当前的上下文,但我不知道在哪里以及如何
答案 0 :(得分:1)
您需要有一个可供绘制的上下文。使用UIGraphicsBeginImageContext
明确创建一个,当您完成绘图时,请致电UIGraphicsEndImageContext
进行清理。
此处您的代码(通过调用UIGraphicsBeginImageContext
)包含在扩展方法中:
extension UIImage {
func imageWithHole(at rect: CGRect) -> UIImage? {
UIGraphicsBeginImageContext(self.size)
guard let context = UIGraphicsGetCurrentContext() else { return nil }
self.draw(at: CGPoint.zero)
context.clear(rect)
let resultImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return resultImage
}
}
像这样使用:
let sourceImage = UIImage(named: "sample.jpg")
let imageWithHole = sourceImage?.imageWithHole(at: CGRect(x: 50, y: 50, width: 50, height: 50))