UIImageView в UIScrollView, масштабирование нестабильно

У меня есть UIImageView в UIScrollview. Я использовал инструкции из docs.

Я установил минимальный и максимальный масштабы увеличения. (0,5 и 6,0). Я установил делегата на себя.

Я вернул представление изображения в viewForZoomingInScrollView. Однако я не знаю, что делать в scrollViewDidEndZooming.

В результате я получаю резкий и непостоянный зум. Это просто не похоже на приложение фотогалереи.

Я что-то упускаю?


person Madhu    schedule 25.06.2013    source источник


Ответы (3)


//create imageview with pinchGesture

        CGRect myImageRect = CGRectMake(17, 95, 285, 130);
        myImage = [[UIImageView alloc] initWithFrame:myImageRect];
        [myImage setImage:[UIImage imageNamed:picture]];
        myImage.userInteractionEnabled = YES;
        UIPinchGestureRecognizer *pgr = [[UIPinchGestureRecognizer alloc]
                                         initWithTarget:self action:@selector(handlePinch:)];
        pgr.delegate = self;
        [myImage addGestureRecognizer:pgr];
        [scrollview addSubview:myImage];

// handlepinch: метод

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

Перед этим добавьте файл .h

Надеюсь, это будет вам полезно ...

person Alex    schedule 25.06.2013
comment
Масштабирование работает плавно, но изображение иногда выходит вправо, что, как мне кажется, связано с панорамированием scrollView. Панорама иногда мешает масштабированию, и панорама уменьшается по мере того, как я увеличиваю масштаб. Должен ли я полностью отказаться от прокрутки и реализовать жест панорамирования для просмотра изображений? В любом случае есть способ заставить его вести себя так же, как приложение для фотографий на ios? Спасибо - person Madhu; 26.06.2013
comment
Вы также можете установить максимальные и минимальные свойства масштаба для прокрутки, для получения дополнительной информации проверьте это нажмите здесь - person Alex; 26.06.2013

Установите для параметра ImageView масштабирования contentMode значение UIViewContentModeCenter и уменьшите масштаб (если необходимо) при загрузке. Когда изображение будет готово, установите начальный масштаб масштабирования, выполнив примерно следующее:

        //Min scale is how much ever it takes to fit the image in the view
        CGRect scrollViewFrame = self.scrollView.frame;
        CGFloat scaleWidth = scrollViewFrame.size.width / self.imageView.image.size.width;
        CGFloat scaleHeight = scrollViewFrame.size.height / self.imageView.image.size.height;
        CGFloat minScale = MIN(scaleWidth, scaleHeight);
        self.scrollView.minimumZoomScale = minScale;
        self.scrollView.zoomScale = minScale;
person RPM    schedule 08.10.2013
comment
Большое спасибо, это решило мою проблему. Я использовал шкалу contentMode для соответствия, что вызывало нервный эффект. - person Sahil Kapoor; 23.09.2015

Это единственное решение, которое, как мне кажется, работает безупречно. Он включает в себя двойное касание и жесты двумя пальцами для увеличения и уменьшения масштаба. http://www.raywenderlich.com/10518/how-to-use-uiscrollview-to-scroll-and-zoom-content

person Madhu    schedule 26.06.2013
comment
Примите свой ответ, и он поможет другим в будущем. - person Piyush Dubey; 20.12.2013