裁剪UIImage中的透明孔

时间:2017-07-22 17:33:26

标签: ios swift core-graphics

我想在UIImage中创建一个洞,但它必须是一个透明的洞。整个将被放置在精灵的中间,但为了测试,我在左上角创建了一个整体:

enter image description here

我完成了这个:

    let hole = CGRect(x: 0, y: 0, width: 512, height: 512)
    let context = UIGraphicsGetCurrentContext()!
    context.addRect(hole)
    context.clip(using: .evenOdd)
    context.setFillColor(UIColor.white.cgColor)
    context.fill(hole)

    image = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()

我不完全了解如何使用UIGraphicsGetCurrentContext类。我不明白上下文是什么?或者我为什么要同时使用addRect()和fillRect()?或者是什么片段?

然而,虽然这些问题很重要,但我主要担心的是我创造的洞不透明:它是白色的。我尝试通过这样做来修复它:

 context.setFillColor(UIColor.clear.cgColor)

但是,这并没有造成任何漏洞。你们有什么建议我做的?

1 个答案:

答案 0 :(得分:2)

尝试使用context.clear(CGRect)

如文档

中所定义
/* Clear `rect' (that is, set the region within the rect to transparent). */

@available(iOS 2.0, *)
public func clear(_ rect: CGRect)

这就是你的代码应该是

的方式
let hole = CGRect(x: 0, y: 0, width: 512, height: 512)
let context = UIGraphicsGetCurrentContext()!
context.clear(hole)

image = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()

希望这有助于你