我有一个UIScrollView,里面有一个UIImageView。由于这是一张大图,我希望用户能够对其进行缩放。UIScrollView只需要在垂直方向上滚动,而不需要在水平方向上滚动。
在添加缩放效果之前,我有以下代码,它可以按照我的要求工作:
-(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. 当我缩小时,整个界面都停止了。您无法再缩放或滚动。完全被锁定。
我进行了一些研究并找到了以下帖子。但我不知道在哪里可以找到NSDefaultRunLoopMode,甚至不知道如何搜索它以确定是否可以解决问题。 https://dev59.com/v1jUa4cB1Zd3GeqPQVRx#6384834