context.Path, возвращающий ноль

103
10

У меня есть следующий код, который вписывается в контекст подкласса CALayer.

override func draw(in con: CGContext) {

// super.draw(in: con) //with/out makes no diff

let endAng = CGFloat(Float.pi * 2)

con.addArc(center: position,
radius: 30,
startAngle: 0,
endAngle: endAng,
clockwise: false)
con.setStrokeColor(UIColor.red.cgColor)
con.setLineWidth(CGFloat(thickness / 5))
con.strokePath()

self.path = con.path

В этой последней строке я пытаюсь сохранить путь, чтобы сделать больше рисунков с ним, когда пользователь переходит в другой режим. Но после присвоения self.path == nil

Документы просто говорят:

Возвращает объект пути, построенный из текущей информации о пути в графическом контексте.

Почему, если бы я просто добавлял компоненты пути в мой контекст подкласса CALayer, то путь getter возвращает нулевой путь? Документация здесь не помогает мне отлаживать.

Таким образом, все функции рисования, такие как addArc говорят, что они добавляют эти фигуры к текущему пути (и я действительно вижу их в моем слое), но на следующей строке, когда я запрашиваю текущий путь контекста, это nil?

спросил(а) 2016-11-26T01:18:00+03:00 3 года, 8 месяцев назад
1
Решение
55

Документация для функции strokePath гласит:

Текущий путь очищается как побочный эффект вызова этой функции.

Переместите свой вызов на con.path раньше, прежде чем погладить путь.

ответил(а) 2016-11-26T03:10:00+03:00 3 года, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема