Применение масштабирования и поворота к представлению с помощью CGAffineTransform

Итак, мне нужно применить некоторое масштабирование и вращение к виду (я делаю это с помощью жестов), поэтому для каждого жеста я обновляю текущие значения масштабирования и вращения примерно такими:

self.scaleWidth *= gesture.scale; //When I detect an horizontal pinch
self.scaleHeight *= gesture.scale; //When I detect a vertical pinch
self.rotationAngle += gesture.rotationAngle; //When I detect a rotation

Затем я делаю следующее, чтобы преобразовать вид:

CGAffineTransform transform = CGAffineTransformScale(CGAffineTransformIdentity, self.scaleWidth, self.scaleHeight);
self.theSubViewToTransform.transform = CGAffineTransformRotate(transform, self.rotationAngle);

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

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

Кто-нибудь знает, что не так с моей реализацией?

Спасибо

12
задан Oliver 10 November 2011 в 00:02
поделиться