uiscrollview zoom in и zoom out не работает должным образом

У меня есть 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];;
 }

теперь у меня есть следующие проблемы, и я не могу понять, что не так,

  1. когда представление только что загружено перед любым щипком, прокрутка не прокручивается до конца изображения.

  2. когда я увеличиваю масштаб, он прокручивается влево и вправо, вверх и вниз по изображению, но все равно не прокручивается до конца изображения, но все равно больше, чем в начале.

  3. когда я уменьшаю масштаб, все останавливается. вы не можете увеличить или уменьшить масштаб, он даже не прокручивается больше. полностью заблокирован.

Я немного поискал и нашел следующее сообщение. https://stackoverflow.com/a/6384834/1103257

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

5
задан Community 23 May 2017 в 12:34
поделиться