UIScrollView 缩放和平移

UIScrollView zooming and panning

我有 UIViewControllerUIView

我把一个 UIScrollView 和另一个 UIView 放在里面,都在我的故事板中 AutoLayout

ViewDidLoad 方法之后,我创建了一个 UIButton 数组,将它们表示为矩阵 NxM.

矩阵可以越界,但滚动视图在这里是有原因的。

当我平移一些 UIButtons 时不捕获任何触摸事件,如果我缩放 UIScrollView 缩放得不是很好,不居中并且它破坏了平移。

有人知道为什么吗?

我通过实施 UIScrollViewDelegate 解决了这个问题:

func scrollViewDidEndZooming(scrollView: UIScrollView, withView view: UIView!, atScale scale: CGFloat) {
    let w = max(scrollView.frame.size.width, totalWidth)
    let h = max(scrollView.frame.size.height, totalHeight)
    view.frame.size = CGSize(width: w * scale, height: h * scale)
    scrollView.contentSize = CGSize(width: w * scale, height: h * scale)
}

因此它可以正确地重新计算大小并且缩放和平移效果很好