我一直在阅读相当多的文档,我必须说,我很困惑。这是我目前设置的内容。
在iPad项目中,我有一个包含子UIView(scrollView
)的UIScrollView(insetView
)。我的insetView
从scrollViewDidEndZooming
方法返回,并严格用于缩放其子视图。
insetView
的开头小于scrollView
并且以insetView
为中心。当用户捏合缩放时,insetView
可以增长到原始尺寸的两倍,或缩小到原始尺寸的一半。
所有这一切都很好,但我想减轻一点烦恼。如果我捏缩放,insetView
缩小,但缩放的原点是insetView
的左上角。换句话说,scrollView
会随着insetView
窗口中固定的左上角而增长和缩小。
我想要做的是scrollView
放大和缩小它的中心,并保持固定在scrollView
的中心,直到它的大小大于insetView
区域。那时,我想缩放原点是捏的中间,或者至少是当前可见的{{1}}当前部分的中心?
如何实现这一目标?
答案 0 :(得分:2)
您希望在scrollViewDidZoom:
委托方法中执行以下操作:
CGSize boundsSize = scrollView.bounds.size;
CGRect frameToCenter = insetView.frame;
if (frameToCenter.size.width < boundsSize.width) {
frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width) / 2.0f;
} else {
frameToCenter.origin.x = 0.0f;
}
if (frameToCenter.size.height < boundsSize.height) {
frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height) / 2.0f;
} else {
frameToCenter.origin.y = 0.0f;
}
insetView.frame = frameToCenter;