Итак, я получаю эту ошибку при запуске моего кода:
CGContextSetStrokeColorWithColor: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextSetLineWidth: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextSetLineJoin: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextSetLineCap: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextSetMiterLimit: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextSetFlatness: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextAddPath: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextDrawPath: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
Когда я устанавливаю переменную среды CG_CONTEXT_SHOW_BACKTRACE, ошибка указывает на мою функцию func bezierPath(dentInMM value: Float) -> CGPath
.Вот фрагменты кода, которые составляют эту часть моего контроллера:
var shape = CAShapeLayer()
func someFunc() {
self.dentView.layer.addSublayer(self.shape)
let color: UIColor = .systemGreen
self.shape.fillColor = color.withAlphaComponent(0.3).cgColor
self.shape.strokeColor = color.cgColor
self.shape.lineWidth = 6
self.shape.path = self.bezierPath(dentInMM: 0)
}
func bezierPath(dentInMM value: Float) -> CGPath {
self.shape.frame = self.dentView.bounds
let x000 = Int(self.shape.frame.minX)
let x050 = Int(self.shape.frame.midX)
let x100 = Int(self.shape.frame.maxX)
let x010 = x100 / 10
let x040 = x050 - x010
let x060 = x050 + x010
let yOffSet = Int(self.shape.frame.minY)
let indentation = Int(value * self.dentDisplayMultiplier)
let bezierPath = UIBezierPath()
bezierPath.move(to: CGPoint(x: x000, y: yOffSet))
bezierPath.addCurve(to: CGPoint(x: x050, y: indentation), controlPoint1: CGPoint(x: x050, y: yOffSet), controlPoint2: CGPoint(x: x040, y: indentation))
bezierPath.addCurve(to: CGPoint(x: x100, y: yOffSet), controlPoint1: CGPoint(x: x060, y: indentation), controlPoint2: CGPoint(x: x050, y: yOffSet))
UIColor.label.setStroke()
bezierPath.stroke()
return bezierPath.cgPath
}
Нужно ли где-то указывать контекст?У меня сложилось впечатление, что CAShapeLayer предоставляет контекст ...