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

标签 ios iphone animation uiscrollview pinchzoom

我正在编写一个 UIScrollView 组件,用户与该组件的交互方式与在谷歌地图或 Apple 的 native map 应用程序等 map 应用程序中的交互方式相同。

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

滚动部分很容易通过设置UIScrollView的decelerationRate属性来实现。

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

最佳答案

似乎没有现有的惯性缩放 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];
}

关于ios - UIScrollView 在缩放时具有减速动画(与滚动相同的行为),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26887687/

相关文章:

iphone - 试图让网络错误警报正确显示在 iPhone 应用程序上?

iphone - 声音引擎泄漏……预加载是一种不好的做法吗?

jquery - 如何将类应用到 div 上进行动画处理

c++ - Windows:是否有我可以作为 Visual C++ 资源引用的内置加载动画?

iphone - 滚动时快速向 UIScrollView 添加 subview (行)

animation - 添加对象时 NSMutableArray 使应用程序崩溃

ios - 创建 UIImage 时 Malloc 崩溃?

ios - 使用 Instagram API 获取特定的用户名数据

iOS:解散时 View Controller 不释放

ios - 根据背景颜色调整图标颜色