UIScrollView在缩放时具有减速动画(与滚动中的行为相同)

时间:2014-11-12 13:03:24

标签: ios iphone animation uiscrollview pinchzoom

我正在编写一个用户与之交互的UIScrollView组件,就像他在Google地图或Apple的原生地图应用等地图应用中一样。

我希望为用户提供与以往相同的滚动和缩放体验 - 即滚动和缩放时的减速效果。

通过设置UIScrollView的decelerationRate属性,可以轻松实现滚动部分。

我的问题是 - 如何为放大缩小实现相同的效果?

1 个答案:

答案 0 :(得分:2)

似乎没有用于惯性缩放的现有API。这是自定义实现的基本思想。你可以调整系数。

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{
    NSLog(@"DidEndZooming %f", scale);
    CGFloat speed = scrollView.pinchGestureRecognizer.velocity;
    NSLog(@"Speed: %f", speed);
    CGFloat targetScale = MIN(kMaximumZoomScale, MAX(1, scale + speed * 1/8));
    NSLog(@"Target: %f", targetScale);
    [scrollView setZoomScale:targetScale animated:YES];
}