Перевод взгляда и проблема его поворота - PullRequest
1 голос
/ 22 июня 2011

У меня есть собственный UIImageView, я могу перетащить его по экрану, выполнив перевод с помощью (xDif и yDif - количество перемещенных пальцев):

CGAffineTransform translate = CGAffineTransformMakeTranslation(xDif, yDif);
[self setTransform: CGAffineTransformConcat([self transform], translate)]; 

Допустим, я переместил ImageView на 50 пикселей в направлениях x и y. Затем я пытаюсь повернуть ImageView (с помощью распознавателя жестов) с помощью:

CGAffineTransform transform = CGAffineTransformMakeRotation([recognizer rotation]);
myImageView.transform = transform;

Что происходит, когда ImageView внезапно перемещается туда, где изначально был ImageView (до перевода - не из перемещенной позиции + 50px в обоих направлениях).

(Кажется, что независимо от того, как я перевожу представление, self.center подкласса ImageView остается неизменным - там, где он был изначально заложен в IB).

Другая проблема заключается в том, что если я поверну ImageView на 30 градусов, а затем попытаюсь повернуть его немного больше, он снова начнет исходное положение (угол = 0) и пойдет оттуда, почему он не запустится под углом 30 град а не 0.

1 Ответ

2 голосов
/ 22 июня 2011

Вы перезаписываете предыдущее преобразование. Чтобы добавить к текущему преобразованию, вы должны сделать это -

myImageView.transform = CGAffineTransformRotate(myImageView.transform, recognizer.rotation);

Поскольку вы изменяете свойство transform в последовательном порядке, вы должны вместо этого использовать CGAffineTransformRotate, CGAffineTransformTranslate и CGAffineTransformScale, чтобы добавить исходное преобразование, а не создавать новое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...