当我们放大和缩小ios中的图像时如何获得原始图像

嗨,我是初学者在ios和我的项目,我在UIScrollview添加UIImage,我已经添加了UIImage的轻拍手势

当我们双击UIImage时,图像应该在视图控制器上全屏缩放

在全屏幕大小的图像后,我们可以像我们想要的任何方式放大它(我的意思是使用像捏缩放效果)在这里我的要求是,当我们双击图像,然后图像需要设置它的原始位置我已经尝试我的水平最好但我没有得到结果,请帮助我

我的代码如下:

#import "ViewController2.h" @interface ViewController2 () { UIScrollView * myScroll; UITapGestureRecognizer *tap; BOOL isFullScreen; CGRect prevFrame; UIImageView * _imageView; } @end @implementation ViewController2 - (void)viewDidLoad { [super viewDidLoad]; isFullScreen = FALSE; myScroll = [[UIScrollView alloc] init]; myScroll.frame = self.view.bounds; myScroll.contentSize = CGSizeMake(_imageView.frame.size.width, _imageView.frame.size.height); myScroll.maximumZoomScale = 4.0; myScroll.minimumZoomScale = 1.0; myScroll.clipsToBounds = YES; myScroll.delegate = self; myScroll.backgroundColor = [UIColor lightGrayColor]; [self.view addSubview:myScroll]; _imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 300, 200)]; _imageView.contentMode = UIViewContentModeScaleAspectFill; [_imageView setClipsToBounds:YES]; _imageView.userInteractionEnabled = YES; _imageView.image = [UIImage imageNamed:@"ram.jpeg"]; UITapGestureRecognizer *tapper = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imgToFullScreen:)]; tapper.numberOfTapsRequired = 1; [_imageView addGestureRecognizer:tapper]; [myScroll addSubview:_imageView]; } - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { return _imageView; } -(void)imgToFullScreen:(UITapGestureRecognizer*)sender { if (!isFullScreen) { [UIView animateWithDuration:0.5 delay:0 options:0 animations:^{ prevFrame = _imageView.frame; [_imageView setFrame:[[UIScreen mainScreen] bounds]]; }completion:^(BOOL finished){ isFullScreen = TRUE; }]; return; } else{ [UIView animateWithDuration:0.5 delay:0 options:0 animations:^{ [_imageView setFrame:prevFrame]; }completion:^(BOOL finished){ isFullScreen = FALSE; }]; return; } } @end 

我在你的代码中做了一些修改,就像下面的代码一样。检查它是否给你想要的输出。

 @interface ScrollViewController ()<UIScrollViewDelegate>{ UIScrollView * myScroll; UITapGestureRecognizer *tap; BOOL isFullScreen; CGRect prevFrame; UIImageView * _imageView; CGAffineTransform trans; } @end @implementation ScrollViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. isFullScreen = FALSE; myScroll = [[UIScrollView alloc] init]; myScroll.frame = [UIScreen mainScreen].bounds; myScroll.contentSize = CGSizeMake(prevFrame.size.width, prevFrame.size.height); myScroll.maximumZoomScale = 4.0; myScroll.minimumZoomScale = 1.0; myScroll.clipsToBounds = YES; myScroll.delegate = self; myScroll.backgroundColor = [UIColor lightGrayColor]; [self.view addSubview:myScroll]; _imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 300, 200)]; _imageView.contentMode = UIViewContentModeScaleAspectFill; [_imageView setClipsToBounds:YES]; _imageView.userInteractionEnabled = YES; _imageView.image = [UIImage imageNamed:@"img.png"]; UITapGestureRecognizer *tapper = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imgToFullScreen:)]; tapper.numberOfTapsRequired = 2; [_imageView addGestureRecognizer:tapper]; [myScroll addSubview:_imageView]; prevFrame = _imageView.frame; trans = _imageView.transform; } - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { return _imageView; } -(void)imgToFullScreen:(UITapGestureRecognizer*)sender { if (!isFullScreen) { myScroll.contentSize = prevFrame.size; [UIView animateWithDuration:0.5 delay:0 options:0 animations:^{ _imageView.frame = [UIScreen mainScreen].bounds; }completion:^(BOOL finished){ isFullScreen = TRUE; }]; return; } else{ [UIView animateWithDuration:0.5 delay:0 options:0 animations:^{ myScroll.contentSize = CGSizeMake(prevFrame.size.width, prevFrame.size.height); _imageView.transform = trans; _imageView.frame = prevFrame; NSLog(@"%@ %@",NSStringFromCGSize(myScroll.contentSize),NSStringFromCGRect(prevFrame)); }completion:^(BOOL finished){ isFullScreen = FALSE; }]; return; } }