1
我有一個ImageView的到的ViewController,我要放大或縮放手勢縮小。此外,我想獲得最初的觀點,當用戶雙擊圖像。我跟着本教程Make Gallery捏緊並輕敲姿勢不正常工作
如果我只使用捏手勢都工作正常,我可以放大,分放大achieved.The右邊是結果在下面的圖片。雖然,如果我雙擊ImageView ImageView獲取其初始格式(圖1),但最小縮放的實現不被識別,如果我繼續捏合手勢縮小ImageView繼續縮小和我得到這個結果(圖片2):
這是我的方法來處理事件:
@interface ImageGalleryViewController(){
NSString *productName;
CGFloat previousScale;
CGFloat previousRotation;
CGFloat beginX;
CGFloat beginY;
CGFloat scale;
//CGFloat __previousScale;
}
- (void)viewDidLoad{
[super viewDidLoad];
// Do any additional setup after loading the view.
scale=1.0;
UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scaleImage:)];
[self.view addGestureRecognizer:pinchGesture];
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resetImage:)];
tapGesture.numberOfTapsRequired=2;
[self.view addGestureRecognizer:tapGesture];
}
- (void)resetImage:(UITapGestureRecognizer *)recognizer{
[UIView animateWithDuration:0.3 animations:^() {
self.view.transform = CGAffineTransformIdentity;
}];
self.bigImage.transform = CGAffineTransformIdentity;
[self.bigImage setCenter: CGPointMake(self.view.frame.size.width/2,self.view.frame.size.height/2+32)];
[UIView commitAnimations];
}
- (void)scaleImage:(UIPinchGestureRecognizer *)recognizer{
NSLog(@"Scale: %f", [recognizer scale]);
if ([recognizer state] == UIGestureRecognizerStateBegan) {
previousScale = scale;
}
CGFloat currentScale = MAX(MIN([recognizer scale] * scale, 10), 1);
CGFloat scaleStep = currentScale/previousScale;
[self.view setTransform: CGAffineTransformScale(self.view.transform, scaleStep, scaleStep)];
previousScale = currentScale;
if ([recognizer state] == UIGestureRecognizerStateEnded ||
[recognizer state] == UIGestureRecognizerStateCancelled ||
[recognizer state] == UIGestureRecognizerStateFailed) {
// Gesture can fail (or cancelled?) when the notification and the object is dragged simultaneously
scale = currentScale;
NSLog(@"Final scale: %f", scale);
}
}
所以,我怎麼能停止,如果最初的右視圖(第一圖像)縮小已經實現?