我有一个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];;
}
现在我有以下问题,我无法弄清楚什么是错的,
当视图刚刚被加载之前,任何捏缩放scrollview不滚动一直到图像的末尾。
当捏合放大时,它会左右滚动并上下滚动图像,但它仍然不会向下滚动到图像的末端,但仍然超过原来的大小开始时。
当我缩小时,整个事情就会停止。你无法放大或缩小,它甚至不再滚动。完全锁定。
我做了一些研究并找到了以下文章。 https://stackoverflow.com/a/6384834/1103257
但我不知道在哪里可以找到NSDefaultRunLoopMode,甚至不知道如何搜索它以确定这是否可以解决问题。
谢谢@Mona。我也面临同样的上述问题。这个对我有用。 :) – iKT 2013-10-30 13:08:05