现在,我有一个不在UIScrollView之外的 View 。由于许多原因,它不能简单地位于滚动 View 内部。所以现在我正在做的是,随着UIScrollView的缩放/平移,我更新了其他辅助 View 。我要考虑的唯一问题是,在 View 弹回到最小或最大比例时,不调整zoomScale值。关于如何在动画返回时获取此值的任何建议?

样例代码:

self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, appSize.width, appSize.height)];
self.scrollView.contentSize = CGSizeMake(appSize.width * 2, appSize.height * 2);

self.scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
self.scrollView.delegate = self;
self.scrollView.bounces = YES;
self.scrollView.bouncesZoom = YES;
self.scrollView.alwaysBounceHorizontal = YES;
self.scrollView.alwaysBounceVertical = YES;
self.scrollView.showsHorizontalScrollIndicator = YES;
self.scrollView.showsVerticalScrollIndicator = YES;

self.scrollViewZoomView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,
                                                                   appSize.width * 2,
                                                                   appSize.height * 2)];
[[self scrollView] addSubview:self.scrollViewZoomView];

float minZoomScale = 2.0f;

self.scrollView.minimumZoomScale = minZoomScale;
self.scrollView.maximumZoomScale = 1.0f;
self.scrollView.zoomScale = self.scrollView.minimumZoomScale;

然后关于自我
-(void) scrollViewDidZoom:(UIScrollView *)scrollView {
    float scale = [scrollView zoomScale];
    [self updateAuxViewScale:scale];
}

最佳答案

多亏了this answer,很明显,人们可以使用presentationLayer来获取正确的值。
我创建了一个UIScrollView category来为zoomScalecontentOffsetcontentSize添加特殊的 setter/getter ,即使UIScrollView正在设置动画,它们也返回正确的值。

您可以在以下位置找到该存储库:https://github.com/bddckr/BDDRScrollViewExtensions

关于iphone - 缩放弹跳时不会更新UIScrollView的zoomScale属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9133021/

10-14 16:54
查看更多