【问题标题】:Changing UIScrollView pinch zoom speed更改 UIScrollView 捏缩放速度
【发布时间】:2015-04-25 00:29:24
【问题描述】:

我想降低 UIScrollView 的缩放速度。

我已经尝试了这两个答案中给出的解决方案:Answer 1Answer 2,但我没有得到预期的结果。

这是我对答案 2 的实现:

- (void)scrollViewDidZoom:(UIScrollView *)scrollView {

    if(scrollView.multipleTouchEnabled){

        CGFloat fSpeedZoom = 2;
        CGFloat fMaxZoomScale = scrollView.maximumZoomScale;
        CGFloat fMinZoomScale = scrollView.minimunZoomScale;

        scrollView.maximumZoomScale = scrollView.zoomScale + fSpeedZoom;
        scrollView.minimumZoomScale = scrollView.zoomScale - fSpeedZoom;

        if(scrollView.maximumZoomScale > fMaxZoomScale){
            self.scrollView.maximumZoomScale = fMaxZoomScale;
        }

        if(scrollView.minimumZoomScale < fMinZoomScale){     
            self.scrollView.minimumZoomScale = fMinZoomScale;
        }
    }
}

如果我将fSppedZoom 的值保持在 2 到 5 之间,我会得到一种指数行为,即我尝试缩放的越远,缩放的速度就越慢。我想获得一个线性行为,其中使用单个参数我可以控制缩放速度。

【问题讨论】:

    标签: ios objective-c uiscrollview zooming uipinchgesturerecognizer


    【解决方案1】:

    我建议不要这样做。

    当您拖动时,开始拖动时手指下方的点会在拖动平移时停留在您的手指下方。在您到达可拖动区域的边缘之前,情况一直如此,此时该点会沿与平移相同的方向移动,但不会太远,以模拟阻力。

    当您捏缩放时,会发生同样的事情。当捏合移动时,两根手指下方的两个点保持在您的手指下方(因此您可以在缩放的同时进行平移)。同样,这只会在无法进一步缩放时失效。

    如果你打破这种接触点关系,用户交互会感觉陌生和不自然。

    如果您绝对必须这样做,我建议您不要尝试对抗UIScrollView 的内置缩放行为,而是实现自己的捏合手势识别器并考虑想要的关系在您的触摸位置和您要显示的滚动视图区域之间实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 2017-09-23
      相关资源
      最近更新 更多