如何启用放大UIScrollView
如何在UIScrollView中启用缩放效果?
看看这个video
video描述:
- 添加
UIScrollViewDelegate
委托 - 采取一个
UIScrollView
- 采取一个UIImageView将被添加到滚动查看
- 将主窗口中的滚动视图
- 连接代表
- 设置imageView
- 设置最大/最小缩放比例[核心的事情在这里]
- 实现委托方法返回视图
答案在这里 :
滚动视图还处理内容的缩放和平移。 当用户进行捏合或捏大手势时,滚动视图调整内容的偏移和缩放。 当手势结束时,pipe理内容视图的对象应该根据需要更新内容的子视图。 (请注意,手势可能会结束,手指仍然可能会下降。)手势正在进行时,滚动视图不会向子视图发送任何跟踪调用。
UIScrollView类可以有一个必须采用UIScrollViewDelegate协议的委托。 要缩放和平移工作,委托必须实现viewForZoomingInScrollView:和scrollViewDidEndZooming:withView:atScale:; 此外,最大(最大缩放比例)和最小(最小缩放比例)缩放比例必须不同。
所以:
- 您需要一个实现
UIScrollViewDelegate
的委托,并将其设置为在您的UIScrollView
实例上进行delegate
- 在你的代表你必须实现一个方法:
viewForZoomingInScrollView:
它必须返回你有兴趣缩放的内容视图 )。 您也可以实现scrollViewDidEndZooming:withView:atScale:
可选。 - 在您的
UIScrollView
实例中,您必须将minimumZoomScale
和maximumZoomScale
设置为不同(默认情况下为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 +我在这里寻找相同的,我发现这是它的图像,但它可能会帮助你。