iOS показывает полный экран UIImage с масштабированием (щепоткой и двойным нажатием)

У меня есть UIImage захваченный с камеры с помощью UIImagePickerController .

Теперь, после того как пользователь нажмет на него, я бы хотел, чтобы он показывал весь экран и мог его масштабировать, используя жесты щепотки, а также жест двойного крана для увеличения определенной области. Другими словами, я хотел бы подражать тому, что делает браузер изображений по умолчанию ios.

Я показываю захваченное изображение в UIImageView с помощью:

 self.imageView.contentMode = UIViewContentModeScaleAspectFill; 

что делает изображение в полноэкранном режиме. Но как мне реализовать масштабирование. Нужно ли мне это делать с нуля с помощью распознавателей жестов? Или, может быть, есть экран отображения изображения по умолчанию со всеми реализованными, о которых я не знаю?

Я создал этот эффект для одного из моих приложений, не забудьте установить делегат вашего scrollview.

код для .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; } 
  • iPhone: как сохранить представление как изображение ??? (например, что вы рисуете)
  • cell.imageView не показывает изображение
  • Как сделать один цвет прозрачным в UIImage
  • Создайте UIImage из строковых данных
  • Как преобразовать FBProfilePictureView в UIImage?
  • IOS: маскирование изображения, учитывающего масштабный коэффициент сетчатки
  • UIImage imageWithContentsOfFile правильный pathForResource
  • Изменение цвета цвета изображения шаблона UIImageView на клике UITableViewCell
  • Как создать шаблон типа коллажа в ios
  • Использование resizableImageWithCapInsets: изображение для кнопки работает только для набора состояний, другие состояния показывают «пробел»,
  • Как сохранить UIImage в прогрессивном формате JPEG в iOS?
  • Давайте будем гением компьютера.