У меня есть следующий код для пользовательского вида.
@IBDesignable class SplitCircleView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
draw(frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
draw(frame)
}
override func draw(_ rect: CGRect) {
self.backgroundColor = .clear
drawSlice(rect: self.frame, startPercent: 87.5, endPercent: 37.5, color: .green)
drawSlice(rect: self.frame, startPercent: 37.5, endPercent: 87.5, color: .red)
}
func drawSlice(rect: CGRect, startPercent: CGFloat, endPercent: CGFloat, color: UIColor) {
let center = CGPoint(x: rect.origin.x + rect.width / 2, y: rect.origin.y + rect.height / 2)
let radius = (min(rect.width, rect.height) / 2)
let startAngle = startPercent / 100 * .pi * 2 - .pi
let endAngle = endPercent / 100 * .pi * 2 - .pi
let path = UIBezierPath()
path.move(to: center)
path.addArc(withCenter: center, radius: radius, startAngle: startAngle, endAngle: endAngle, clockwise: true)
path.close()
color.setFill()
path.fill()
}
}
Я пытаюсь нарисовать круг с двумя полукругами разных цветов.
Это выглядит хорошо, когда я его просматриваюна детской площадке живой вид.Когда я ставлю это приложение, это вызывает у меня проблемы.Когда код пытается выполнить color.setFill () и path.fill (), в журнале появляются следующие ошибки:
2018-06-01 14: 37: 08.118005 + 0100 SplitCircleView [21353: 2290599] [Неизвестное имя процесса] CGContextSetFillColorWithColor: недопустимый контекст 0x0.Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.2018-06-01 14: 37: 08.118055 + 0100 SplitCircleView [21353: 2290599] [Неизвестное имя процесса] CGContextSaveGState: недопустимый контекст 0x0.Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.2018-06-01 14: 37: 08.118094 + 0100 SplitCircleView [21353: 2290599] [Неизвестное имя процесса] CGContextSetFlatness: недопустимый контекст 0x0.Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.2018-06-01 14: 37: 08.118141 + 0100 SplitCircleView [21353: 2290599] [Неизвестное имя процесса] CGContextAddPath: недопустимый контекст 0x0.Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.2018-06-01 14: 37: 08.118184 + 0100 SplitCircleView [21353: 2290599] [Неизвестное имя процесса] CGContextDrawPath: недопустимый контекст 0x0.Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.2018-06-01 14: 37: 08.118222 + 0100 SplitCircleView [21353: 2290599] [Неизвестное имя процесса] CGContextRestoreGState: недопустимый контекст 0x0.Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.2018-06-01 14: 37: 08.118336 + 0100 SplitCircleView [21353: 2290599] [Неизвестное имя процесса] CGContextSetFillColorWithColor: недопустимый контекст 0x0.Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.2018-06-01 14: 37: 08.118376 + 0100 SplitCircleView [21353: 2290599] [Неизвестное имя процесса] CGContextSaveGState: недопустимый контекст 0x0.Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.2018-06-01 14: 37: 08.118413 + 0100 SplitCircleView [21353: 2290599] [Неизвестное имя процесса] CGContextSetFlatness: недопустимый контекст 0x0.Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.2018-06-01 14: 37: 08.118451 + 0100 SplitCircleView [21353: 2290599] [Неизвестное имя процесса] CGContextAddPath: недопустимый контекст 0x0.Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.2018-06-01 14: 37: 08.118491 + 0100 SplitCircleView [21353: 2290599] [Неизвестное имя процесса] CGContextDrawPath: недопустимый контекст 0x0.Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.2018-06-01 14: 37: 08.118528 + 0100 SplitCircleView [21353: 2290599] [Неизвестное имя процесса] CGContextRestoreGState: недопустимый контекст 0x0.Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.
Что я делаю не так и как я могу это исправить?