Проблема в следующей строке:
shapeLayer.position = CGPoint(x: drawingView.frame.midX, y: drawingView.frame.midY)
Везде, где вы говорите drawingView.frame
, говорите drawingView.bounds
.
(На самом деле вы должны говорить drawingView.layer.bounds
, а не просто drawingView.bounds
, но бывает, что это одно и то же.)
Однако есть и вторая проблема, заключающаяся в том, что у вашего слоя фигуры нет размера. Поэтому его position
совпадает с его верхним левым углом. По этой причине вам было бы намного лучше отцентрировать его в суперслое, просто сказав
shapeLayer.frame = drawingView.layer.bounds
. Тогда у вас будет слой формы, точно занимающий чертежный вид. (Вы сможете увидеть это ясно, если вы дадите слою формы цвет фона.) Теперь ваша проблема заключается в том, что вы хотите убедиться, что сам путь рисования центрирован в слое формы, но это это другое упражнение.