Думайте о текущем графическом контексте для этого представления как о двери, которая автоматически открывается непосредственно перед тем, как drawRect
начинает работать и закрывается, когда она заканчивается.
Теперь подумайте о том, что означает асинхронный термин «заканчивается».Мы возвращаемся из текущего цикла выполнения, и дверь закрывается, прежде чем какой-либо асинхронный код может начаться.
Итак, ваш код работает следующим образом:
// the door opens
override func draw(_ rect: CGRect) {
accessQueue.async {
// the door closes
self.updateColors()
DispatchQueue.main.async {
super.draw(rect)
}
}
}
Как только дверь закрывается, текущий графический контекст отсутствует, и всем командам рисования некуда идти.Таким образом, весь ваш код бесполезен.
отладил drawC () LineChartView и обнаружил, что UIGraphicsGetCurrentContext () возвращает nil.Почему?
Вот почему.К тому времени, когда код запускается, больше нет графического контекста.