CGMutablePath переходит при изменении anchorPoint * после * масштабирования представления? - PullRequest
0 голосов
/ 03 октября 2019

Предположим, у меня есть квадратный путь (на самом деле мой путь - это карта мира). Пользователь должен быть в состоянии ущипнуть, чтобы увеличить масштаб, а также иметь возможность перемещаться. Для меня важно, чтобы при масштабировании при масштабировании точка, увеличенная «в», была центром зажима (точка между пальцами пользователя, а не только начало слоя). Я использовал эту технику, чтобы добиться этого (в основном вы переводите в центр прижима, масштабируете вид, затем переводите обратно).

Моя проблема заключается в том, когда я иду панорамировать вид (достигаетсяустановка точки привязки) после масштабирования некоторого количества вид «прыгает» на определенное количество пикселей, но после этого начального прыжка в позиции он перемещается, как и ожидалось.

enter image description here

Я создал этот ~ 100-строчный Gist с минимальным кодом, необходимым для создания приложения: https://gist.github.com/jaredrada/5baded65e97c0cf44392747631052c71

Если вы запустите этот код, масштабируйте представление с помощью жеста пинч, а затем переведите с помощью панорамированияжестом, вы увидите, как вид прыгает на определенное количество пикселей. Я должен отметить, что нежелательный эффект возникает, только если вы ранее переместили квадрат от начала координат.

Конечно, любая помощь приветствуется. Я подозреваю, что это связано с точкой привязки против положения. Может быть, мне нужно установить новую опорную точку и положение, когда происходит масштабное событие. Спасибо за понимание!

...