У меня есть imageView, к которому я добавил UIPinchGestureRecognizer и UIRotationGestureRecognizer.
в жесте повышения, я преобразую и масштабирую представление, а в жесте вращения применяю преобразование вращения к нему.
Проблема в том, когда я поворачиваю imageView, а затем начинаю масштабирование.Масштабирование всегда начинается с нормального состояния.
Итак, что я хочу, так это когда я поворачиваю его на 30 градусов по часовой стрелке, а затем увеличиваю.он должен увеличиваться, оставаясь на 30 градусов по часовой стрелке.
Вот код:
- (void)viewDidLoad{
[super viewDidLoad];
//setting up the image view
mTotalRotation = 0.0;
self.imageView.image = self.photo;
self.imageView.userInteractionEnabled = YES;
UIRotationGestureRecognizer *twoFingersRotate =
[[[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingersRotate:)] autorelease];
[self.imageView addGestureRecognizer:twoFingersRotate];
UIPinchGestureRecognizer *pinchGesture = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchZoom:)] autorelease];
[self.imageView addGestureRecognizer:pinchGesture];
// Do any additional setup after loading the view from its nib.
}
// Rotation gesture handler
- (void)twoFingersRotate:(UIRotationGestureRecognizer *)recognizer
{
if ([recognizer state] == UIGestureRecognizerStateEnded) {
mTotalRotation += recognizer.rotation;
return;
}
self.imageView.transform = CGAffineTransformMakeRotation(mTotalRotation + recognizer.rotation);
}
// Pinch Gesture
-(void)pinchZoom:(UIPinchGestureRecognizer*)recognizer{
self.imageView.transform = CGAffineTransformMakeScale(recognizer.scale, recognizer.scale) ;
}