滚动视图、缩放和缩放原点混淆



我已经阅读了很多文档,我必须说,我很困惑。以下是我目前的设置。

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

CCD_ 5开始小于CCD_。当用户捏住缩放时,insetView可以增长到原始大小的两倍,也可以缩小到原始尺寸的一半。

所有这些都很好,但有一点烦恼我想减轻。如果我捏来缩放,insetView会收缩,但缩放的原点是insetView的左上角。换句话说,insetView的左上角点固定在scrollView窗口中时,它将同时增长和收缩。

我想做的是让insetView放大和缩小它的中心,并固定在scrollView的中心,直到它的大小大于scrollView区域。在这一点上,我希望缩放原点位于收缩的中间,或者至少位于当前可见的insetView的当前部分的中心?

如何才能做到这一点?

您希望在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;

最新更新