iOS显示UIImage全屏,缩放(捏和双击)启用

我有一个UIImageUIImagePickerController摄像头捕获。

现在用户点击它之后,我希望它能够全屏显示,并且能够使用捏手势以及双击手势放大和缩小特定区域。 换句话说,我想模仿iOS的默认图像浏览器。

我用UIImageView显示捕获的图像:

 self.imageView.contentMode = UIViewContentModeScaleAspectFill; 

这使得图像全屏。 但是,我如何实现缩放。 我需要使用手势识别器从头开始吗? 或者,也许有一个默认的图像显示视图与所有实现我不知道的?

我已经为我的应用程序创build了这个效果,不要忘记设置您的滚动视图的委托。

代码.h文件

 #import <UIKit/UIKit.h> @interface ImageViewerController : UIViewController<UIScrollViewDelegate> // The scroll view used for zooming. @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; // The image view that displays the image. @property (weak, nonatomic) IBOutlet UIImageView *imageView; // The image that will be shown. @property (strong, nonatomic) NSString *imageUrlString; @end 

代码.m

 #import "ImageViewerController.h" @interface HNImageViewerController () - (IBAction)handleSingleTap:(UIButton*)tapGestureRecognizer; @end @implementation ImageViewerController - (void)viewDidLoad { [super viewDidLoad]; [self.imageView setImage:[UIImage imageNamed:@"placeholder-image"]]; self.scrollView.delegate=self; } - (BOOL)prefersStatusBarHidden { return YES; } #pragma mark - UIScrollViewDelegate methods - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { return self.imageView; } - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { if (self.scrollView.zoomScale == self.scrollView.minimumZoomScale) { [self dismissViewControllerAnimated:YES completion:nil]; } } #pragma mark - Private methods - (IBAction)handleSingleTap:(UIButton *)tapGestureRecognizer { [self dismissViewControllerAnimated:YES completion:nil]; } 

这很容易实现:

 - (IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer; 

接着:

 - (IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer { recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); recognizer.scale = 1; }