放大后点击UIImageView返回到开始坐标?
问题描述:
我创建了一个UIImageView,我的用户可以放大并从左向右平移;效果很好。不过,我想这样做是为了当用户点击屏幕时,图像会回到原来的位置(在用户放大或平移之前)。任何想法我如何编排?请参见下面当前代码:放大后点击UIImageView返回到开始坐标?
ViewController.m
- (IBAction)pinchGestureDidFire:(UIPinchGestureRecognizer *)pinch {
UIView *pinchView = pinch.view;
CGRect bounds = pinchView.bounds;
CGPoint pinchCenter = [pinch locationInView:pinchView];
pinchCenter.x -= CGRectGetMidX(bounds);
pinchCenter.y -= CGRectGetMidY(bounds);
CGAffineTransform transform = pinchView.transform;
transform = CGAffineTransformTranslate(transform, pinchCenter.x, pinchCenter.y);
CGFloat scale = pinch.scale;
transform = CGAffineTransformScale(transform, scale, scale);
transform = CGAffineTransformTranslate(transform, -pinchCenter.x, -pinchCenter.y);
pinchView.transform = transform;
pinch.scale = 1.0;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
{
BOOL shouldReceiveTouch = YES;
if (gestureRecognizer == tap) {
shouldReceiveTouch = (touch.view == featureImage);
}
return shouldReceiveTouch;
}
- (IBAction)panWasRecognized:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:featureImage];
CGPoint center = featureImage.center;
center.x += translation.x;
center.y += translation.y;
featureImage.center = center;
[recognizer setTranslation:CGPointZero inView:featureImage];
}
-(void)imgToFullScreen {
[[NSBundle mainBundle] loadNibNamed:@"FullSized" owner:self options:nil];
CATransition *transition = [CATransition animation];
transition.duration = 0.5;
transition.type = kCATransitionReveal;
[mrView.layer addAnimation:transition forKey:nil];
[self.view addSubview:mrView];
NSString *imageUrl = [NSString stringWithFormat:@"/image/%@",cellImageLink];
[self.featureImage sd_setImageWithURL:[NSURL URLWithString:imageUrl]];
featureImage.userInteractionEnabled = YES;
}
答
添加UITapGestureRecognizer
到视图。当它触发时,将视图的transform
设回CGAffineTransformIdentity
。