Это не «мимо» центральной точки.Ваше заблуждение заключается в том, что вы прокладываете путь.Когда вы обводите путь, обводка располагается в центре пути, и поэтому половина обводки находится вне пути, а половина обводки находится внутри пути.Если вы хотите точный обвод, у вас есть два варианта:
Заполните ваш путь цветом обводки, затем создайте другой путь, который будет вставлен в ваш первый, на желаемую ширину линии, а затемзаполните этот путь цветом заливки.Это будет имитировать "внутренний" ход, хотя он не будет использоваться, если ваши цвета обводки или заливки являются полупрозрачными.
Прикрепите к траектории, удвойте ширину обводки и затем обведитедорожка.Отсечение заставит обводку рисовать только внутри траектории.Однако это может показаться не совсем «точным» в углах (не совсем точно), так как это удваивает ширину хода, а не вычисляет «желаемый» путь.
В качестве альтернативы, вы можете попробовать простоустановив lineJoinStyle
в значение, отличное от kCGLineJoinMiter
.При использовании стиля митры по умолчанию линии фактически вытягиваются настолько далеко, насколько это необходимо от угла, чтобы встретиться, что означает, что они могут проходить на 1/2 ширины линии.Если вы используете kCGLineJoinRound
или kCGLineJoineBevel
, они не могут пройти больше половины ширины линии.Это может быть не совсем точно, но может быть достаточно для того, что вы хотите.