简体   繁体   English

放大后点按时,是否将UIImageView返回到起始坐标?

[英]Return UIImageView to starting coordinates when tapped after zooming in?

I've created a UIImageView that my users can zoom in on and pan from left to right; 我创建了一个UIImageView,我的用户可以放大并从左向右平移。 works great. 效果很好。 However I want to make it so that when the user taps the screen, the image goes back to where it was (before the user zoomed in or panned). 但是,我想这样做,以便当用户点击屏幕时,图像返回到原来的位置(在用户放大或平移之前)。 Any idea how I can orchestrate that? 知道我该如何安排吗? See current code below: 请参阅下面的当前代码:

ViewController.m 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;


}

Add a UITapGestureRecognizer to the view. UITapGestureRecognizer添加到视图。 When it fires, set view's transform back to CGAffineTransformIdentity . 触发时,将视图的transform设置回CGAffineTransformIdentity

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM