UIGraphicsGetCurrentContext() 获取当前 CGContext 失败

UIGraphicsGetCurrentContext() failed to get the current CGContext

我在学习的书上看到一个例子iOS13programming.The例子想画一个箭头,如下图:

示例代码如下:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        drawArrow()
    }

    func drawArrow () {
        // obtain the current graphics context
        guard let con = UIGraphicsGetCurrentContext() else { return }
        // draw a black (by default) vertical line, the shaft of the arrow
        con.move(to: CGPoint(100, 100))
        con.addLine(to: CGPoint(100, 19))
        con.setLineWidth(20)
        con.strokePath()
        // draw a red triangle, the point of the arrow
        con.setFillColor(UIColor.red.cgColor)
        con.move(to: CGPoint(80, 25))
        con.addLine(to: CGPoint(120, 25))
        con.fillPath()
        // snap a triangle out of the shaft by drawing in Clear blend mode
        con.move(to: CGPoint(90, 101))
        con.addLine(to: CGPoint(100, 90))
        con.addLine(to: CGPoint(110, 101))
        con.setBlendMode(.clear)
        con.fillPath()
    }
}

但是,当 运行 时,代码行 guard let con = UIGraphicsGetCurrentContext() else { return } 未能按预期生成 CGContext 实例。我不确定为什么会这样。您能否帮助解释原因并提出解决问题的方法?非常感谢!

那是我的书和我的箭,你没有按照书上的指示去做。该示例告诉您在 UIView 子类中,并且应该从您的 draw(_:) 覆盖中调用此代码。