Щепотка увеличить в прокрутке
Я делаю одно приложение для просмотра, в представлении прокрутки, которое содержит UIImageView, так как представление изображения - это страница журнала, все, что мне нужно сделать, это сделать так, чтобы можно было правильно масштабировать его и прокручивать, поэтому я настроил масштабирование с помощью постукивание (благодаря образцу Apple TapToZoom) и все прекрасно работает.
проблема в том, что я хочу включить масштабирование по пинчу, что немного сложнее реализовать, я преуспел, но масштабирование не так уж и правильно, кажется, что это прыжковые весы, также, когда я уменьшаю масштаб, imageView может идти так мало что его больше не видно?
Вы можете взглянуть на контроллер здесь:
https://github.com/HosniD/pinchzoom-iphone/blob/master/scroll/scroll/TestViewController.m
У кого-нибудь есть идеи о том, как сделать это лучше?
3 ответа
Ответ из яблочной документации
- (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;
}
То, что вы хотите, в этой демонстрации PhotoScroller, написанной 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
Используйте мое демонстрационное приложение для руководства: http://rexstjohn.com/facebook-like-ios-photo-modal-gallery-swipe-gestures/.
Включает поддержку раскадровок и авто-раскладки.