UIScrollView 缩放和平移
UIScrollView zooming and panning
我有 UIViewController
和 UIView
。
我把一个 UIScrollView
和另一个 UIView
放在里面,都在我的故事板中 AutoLayout
。
在 ViewDidLoad
方法之后,我创建了一个 UIButton
数组,将它们表示为矩阵 N
xM
.
矩阵可以越界,但滚动视图在这里是有原因的。
当我平移一些 UIButton
s 时不捕获任何触摸事件,如果我缩放 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)
}
因此它可以正确地重新计算大小并且缩放和平移效果很好
我有 UIViewController
和 UIView
。
我把一个 UIScrollView
和另一个 UIView
放在里面,都在我的故事板中 AutoLayout
。
在 ViewDidLoad
方法之后,我创建了一个 UIButton
数组,将它们表示为矩阵 N
xM
.
矩阵可以越界,但滚动视图在这里是有原因的。
当我平移一些 UIButton
s 时不捕获任何触摸事件,如果我缩放 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)
}
因此它可以正确地重新计算大小并且缩放和平移效果很好