2012-06-06 3 views
1

Я делаю одно приложение для просмотра, в прокрутке, которое содержит UIImageView, поскольку изображение представляет собой страницу журнала, все, что мне нужно сделать, это сделать возможным правильное масштабирование на нем и прокрутку, поэтому я настроил масштабирование, нажав (благодаря образцу Apple tapToZoom), и все отлично работает.pinch увеличить scrollview

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

вы можете посмотреть на контроллер здесь:

https://github.com/HosniD/pinchzoom-iphone/blob/master/scroll/scroll/TestViewController.m

Кто-нибудь есть идея о том, как сделать его лучше?

+0

Почему у вас есть ручкаPinchGesture? этот жест уже обрабатывается в режиме прокрутки, –

+0

Что вы имеете в виду? что мне делать? – Hosni

ответ

0

Что вы хотите найти в этом PhotoScroller demo, написанном Apple. Я сам это использовал, и он отлично работает.

В частности, обратите внимание на модуль ImageScrollView. Он обрабатывает масштабирование.

Вот код из заголовка UIScrollView в о масштабировании:

/* 
the following properties and methods are for zooming. as the user tracks with two fingers, we adjust the offset and the scale of the content. When the gesture ends, you should update the content 
as necessary. Note that the gesture can end and a finger could still be down. While the gesture is in progress, we do not send any tracking calls to the subview. 
the delegate must implement both viewForZoomingInScrollView: and scrollViewDidEndZooming:withView:atScale: in order for zooming to work and the max/min zoom scale must be different 
note that we are not scaling the actual scroll view but the 'content view' returned by the delegate. the delegate must return a subview, not the scroll view itself, from viewForZoomingInScrollview: 
*/ 

@property(nonatomic) float minimumZoomScale;  // default is 1.0 
@property(nonatomic) float maximumZoomScale;  // default is 1.0. must be > minimum zoom scale to enable zooming 
+0

На самом деле это классный способ сделать это, но кажется немного сложнее по сравнению с тем, что я сделал, также я не вижу инструкций, которые он использовал для установки распознавателя жестов в viewmImage, как он появился? – Hosni

+0

Он делает это, устанавливая максимальные свойства ZoomScale и minimumZoomScale UIScrollView. Я отредактировал свой ответ. –

+0

Это то, что я сделал на моем viewDidLoad ... вы посмотрели мой код? – Hosni

1

Ответ от яблочного документации

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 

{ 

    return self.imageView; 

} 
- (void)viewDidLoad { 

    [super viewDidLoad]; 

    self.scrollView.minimumZoomScale=0.5; 

    self.scrollView.maximumZoomScale=6.0; 

    self.scrollView.contentSize=CGSizeMake(1280, 960); 

    self.scrollView.delegate=self; 

} 

Check my answer