iOS show UIImage den Vollbildmodus mit aktiviertem Zoom(Pinch und Doppeltipp)




uiimageview set image swift (2)

Ich habe ein UIImage von der Kamera mit UIImagePickerController .

Jetzt, nachdem der Benutzer darauf geklickt hat, möchte ich, dass es den ganzen Bildschirm anzeigt und in der Lage ist, es mit den Pinch-Gesten und der Doppeltipp-Geste zu vergrößern und zu verkleinern, um einen bestimmten Bereich zu vergrößern. Mit anderen Worten, ich würde gerne emulieren, was der Standard-Bildbrowser des ios tut.

Ich UIImageView das aufgenommene Bild in einem UIImageView mit:

self.imageView.contentMode = UIViewContentModeScaleAspectFill;

Dadurch wird das Bild im Vollbildmodus angezeigt. Aber wie implementiere ich das Zoomen? Muss ich es mit Gestenerkennern von Grund auf neu machen? Oder gibt es eine Standard-Bildanzeige mit all dem, was ich nicht weiß?


Dies ist sehr einfach zu implementieren:

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

und dann:

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

Ich habe diesen Effekt für eine meiner App erstellt, vergessen Sie nicht, delegieren Sie Ihre scrollview.

Code für die .h-Datei

#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

Code für .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];
}






uiimage