滚动视图,缩放和缩放原点混乱

时间:2012-01-10 17:17:26

标签: ios cocoa-touch uiscrollview

我一直在阅读相当多的文档,我必须说,我很困惑。这是我目前设置的内容。

在iPad项目中,我有一个包含子UIView(scrollView)的UIScrollView(insetView)。我的insetViewscrollViewDidEndZooming方法返回,并严格用于缩放其子视图。

insetView的开头小于scrollView并且以insetView为中心。当用户捏合缩放时,insetView可以增长到原始尺寸的两倍,或缩小到原始尺寸的一半。

所有这一切都很好,但我想减轻一点烦恼。如果我捏缩放,insetView缩小,但缩放的原点是insetView的左上角。换句话说,scrollView会随着insetView窗口中固定的左上角而增长和缩小。

我想要做的是scrollView放大和缩小它的中心,并保持固定在scrollView的中心,直到它的大小大于insetView区域。那时,我想缩放原点是捏的中间,或者至少是当前可见的{{1}}当前部分的中心?

如何实现这一目标?

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;