如何启用放大UIScrollView

如何在UIScrollView中启用缩放效果?

看看这个video

video描述:

  • 添加UIScrollViewDelegate委托
  • 采取一个UIScrollView
  • 采取一个UIImageView将被添加到滚动查看
  • 将主窗口中的滚动视图
  • 连接代表
  • 设置imageView
  • 设置最大/最小缩放比例[核心的事情在这里]
  • 实现委托方法返回视图

答案在这里 :

滚动视图还处理内容的缩放和平移。 当用户进行捏合或捏大手势时,滚动视图调整内容的偏移和缩放。 当手势结束时,pipe理内容视图的对象应该根据需要更新内容的子视图。 (请注意,手势可能会结束,手指仍然可能会下降。)手势正在进行时,滚动视图不会向子视图发送任何跟踪调用。

UIScrollView类可以有一个必须采用UIScrollViewDelegate协议的委托。 要缩放和平移工作,委托必须实现viewForZoomingInScrollView:和scrollViewDidEndZooming:withView:atScale:; 此外,最大(最大缩放比例)和最小(最小缩放比例)缩放比例必须不同。

所以:

  1. 您需要一个实现UIScrollViewDelegate的委托,并将其设置为在您的UIScrollView实例上进行delegate
  2. 在你的代表你必须实现一个方法: viewForZoomingInScrollView: 它必须返回你有兴趣缩放的内容视图 )。 您也可以实现scrollViewDidEndZooming:withView:atScale:可选。
  3. 在您的UIScrollView实例中,您必须将minimumZoomScalemaximumZoomScale设置为不同(默认情况下为1.0)。

注意:关于这个有趣的事情是如果你想中断缩放。 在viewForZooming...方法中返回nil是否足够? 它确实放大了缩放,但是其中一些手势会被搞乱(对于两个手指)。 因此,要中断缩放,您应该将最小和最大缩放比例设置为1.0。

请阅读Ray Wenderlich教程:

http://www.raywenderlich.com/76436/use-uiscrollview-scroll-zoom-content-swift

如果您按照“滚动和缩放大图”部分进行操作,它将会显示图像并使您可以捏和放大。

如果链接被改变,这里的主要信息:把这个代码放在你的视图控制器(这设置主要function):

 override func viewDidLoad() { super.viewDidLoad() // 1 let image = UIImage(named: "photo1.png")! imageView = UIImageView(image: image) imageView.frame = CGRect(origin: CGPoint(x: 0, y: 0), size:image.size) scrollView.addSubview(imageView) // 2 scrollView.contentSize = image.size // 3 var doubleTapRecognizer = UITapGestureRecognizer(target: self, action: "scrollViewDoubleTapped:") doubleTapRecognizer.numberOfTapsRequired = 2 doubleTapRecognizer.numberOfTouchesRequired = 1 scrollView.addGestureRecognizer(doubleTapRecognizer) // 4 let scrollViewFrame = scrollView.frame let scaleWidth = scrollViewFrame.size.width / scrollView.contentSize.width let scaleHeight = scrollViewFrame.size.height / scrollView.contentSize.height let minScale = min(scaleWidth, scaleHeight); scrollView.minimumZoomScale = minScale; // 5 scrollView.maximumZoomScale = 1.0 scrollView.zoomScale = minScale; // 6 centerScrollViewContents() } 

join这个类:

 func centerScrollViewContents() { let boundsSize = scrollView.bounds.size var contentsFrame = imageView.frame if contentsFrame.size.width < boundsSize.width { contentsFrame.origin.x = (boundsSize.width - contentsFrame.size.width) / 2.0 } else { contentsFrame.origin.x = 0.0 } if contentsFrame.size.height < boundsSize.height { contentsFrame.origin.y = (boundsSize.height - contentsFrame.size.height) / 2.0 } else { contentsFrame.origin.y = 0.0 } imageView.frame = contentsFrame } 

然后,如果你想要双击手势被识别:

 func scrollViewDoubleTapped(recognizer: UITapGestureRecognizer) { // 1 let pointInView = recognizer.locationInView(imageView) // 2 var newZoomScale = scrollView.zoomScale * 1.5 newZoomScale = min(newZoomScale, scrollView.maximumZoomScale) // 3 let scrollViewSize = scrollView.bounds.size let w = scrollViewSize.width / newZoomScale let h = scrollViewSize.height / newZoomScale let x = pointInView.x - (w / 2.0) let y = pointInView.y - (h / 2.0) let rectToZoomTo = CGRectMake(x, y, w, h); // 4 scrollView.zoomToRect(rectToZoomTo, animated: true) } 

如果你想了解更多的细节,请阅读教程。

确保你设置viewController为scrollViews委托并实现:

 func viewForZooming(in scrollView: UIScrollView) -> UIView? { return imageView } 

我不认为这是适用于iOS 5.0和Xcode 4.3 +我在这里寻找相同的,我发现这是它的图像,但它可能会帮助你。

http://www.youtube.com/watch?v=Ptm4St6ySEI