2013-06-25 11 views
1

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

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

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

Результат, который у меня есть, - это дрожащий зум и несовместимый. Это просто не ведет себя как приложение для фотогалереи.

Я что-то упустил?

ответ

2
//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

Надеется, что это будет полезно для вас ...

+0

зум работает плавно, но изображение иногда забегает за вправо, который я думаю, что из-за сковороду Scrollview в. Кастрюка иногда мешает увеличению, и кастрюля уменьшается по мере увеличения. Должен ли я полностью исключить scrollview и реализовать жест панорамы в режиме просмотра изображений? В любом случае есть ли способ заставить его вести себя так же, как приложение для фотографий на ios? Спасибо – Madhu

+0

Вы также можете установить максимальные и минимальные свойства масштабирования для scrollview для получения дополнительной информации. [Щелкните здесь] (http://navaneethant.wordpress.com/2010/06/30/zooming-and-scrolling-in-uiscrollviewiphone-application /) – Alex

1

Задайте свой масштабный масштаб ImageMode как 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; 
+1

Спасибо, что это решило мою проблему. Я использовал масштаб contentMode, чтобы он соответствовал, что вызывало эффект дрожания. –