У меня есть uiscrollview и внутри него есть uiimageview. Я хочу, чтобы пользователь мог увеличивать изображение, так как оно большое. прокрутка должна быть только вертикальной, а не горизонтальной.
до добавления эффекта масштабирования у меня был следующий код, и он работал так, как я хотел,
-(void)viewDidLoad
{
[scrollView setScrollEnabled:YES];
[scrollView setContentSize:CGSizeMake(320, 1690)];
}
поэтому я провел небольшое исследование и в итоге получил следующий код для включения масштабирования и уменьшения изображения с помощью щипка,
-(void)viewDidLoad
{
scrollView.scrollEnabled = YES;
[scrollView setContentSize:CGSizeMake(320, 1690)];
scrollView.delegate = self;
// scrollView.contentSize = instImage.frame.size;
scrollView.minimumZoomScale = scrollView.frame.size.width / instImage.frame.size.width;
scrollView.maximumZoomScale = 2.0;
[scrollView setZoomScale:scrollView.minimumZoomScale];
[[NSRunLoop currentRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate distantFuture]];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return instImage;
}
- (CGRect)centeredFrameForScrollView:(UIScrollView *)scroll andUIView:(UIView *)rView {
CGSize boundsSize = scroll.bounds.size;
CGRect frameToCenter = rView.frame;
// center horizontally
if (frameToCenter.size.width < boundsSize.width) {
frameToCenter.origin.x = ((boundsSize.width - frameToCenter.size.width) / 2);
}else {
frameToCenter.origin.x = 0;
}
return frameToCenter;
}
- (void)scrollViewDidZoom:(UIScrollView *)scrollV {
instImage.frame = [self centeredFrameForScrollView:scrollV andUIView:instImage];;
}
теперь у меня есть следующие проблемы, и я не могу понять, что не так,
когда представление только что загружено перед любым щипком, прокрутка не прокручивается до конца изображения.
когда я увеличиваю масштаб, он прокручивается влево и вправо, вверх и вниз по изображению, но все равно не прокручивается до конца изображения, но все равно больше, чем в начале.
когда я уменьшаю масштаб, все останавливается. вы не можете увеличить или уменьшить масштаб, он даже не прокручивается больше. полностью заблокирован.
Я немного поискал и нашел следующее сообщение. https://stackoverflow.com/a/6384834/1103257
но я не знаю, где мне найти NSDefaultRunLoopMode или даже как его искать, чтобы понять, может ли это решить проблему или нет.