ios - MKMapView:如何复制在 Apple 的 'bounce-zoom' 应用程序中看到的 'Find my iPhone/Friends'?

标签 ios iphone swift mkmapview mapkit

背景

MKMapView 附带了几种方法,可让您设置可见 map 矩形(或区域、坐标跨度等)。这些方法有一个 animated 参数,当设置为 true 时,将使用大约 0.3 秒的线性动画来为变化设置动画。

问题

虽然这很好,但我想复制 Apple 在他们的 Find my FriendsFind my iPhone 应用程序中使用的动画,当点击 map 时。如果您自己尝试一下,您会发现带有非线性曲线的动画速度更快(大约 0.15 秒)。现在,我们称其为“弹跳-缩放”过渡。

我想复制非线性动画曲线和自定义动画持续时间。在 UIView 的 animateWithSpring... 方法中包装 map 更新似乎不起作用(当然我可能做错了)。非常清楚 Apple 可能有能力做 MKMapView 的 API 中未公开提供的事情,但是 Apple 的 App Store 分布式应用程序似乎通常会遵守他们关于公共(public) API 的指导方针。

这可能吗?如果是这样 - 怎么样?仅仅改变动画持续时间并不是我所追求的。我也想控制动画曲线。

示例代码

参见 here对于尝试执行上述操作的 Playground 。请注意,MKMapView 似乎考虑了动画持续时间,但没有考虑弹性,例如 Find my iPhone/Find my Friends。

最佳答案

我认为您正在寻找 AnimateWithDuration 并使用 UIViewAnimationOptionCurveEaseInOut 选项。我在我创建的应用程序中做了类似的事情,但带有按钮。我不得不将动画链接在一起。使其达到预期大小的 100%,然后是 80%,然后回到 100%

关于ios - MKMapView:如何复制在 Apple 的 'bounce-zoom' 应用程序中看到的 'Find my iPhone/Friends'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37383393/

相关文章:

ios - UIImageView 缓存策略 - AFNewtorking

iphone - 在代码块中添加和删除 subview 不会产生动画

swift - 你如何添加评分功能并允许用户在 Xcode 游戏中输入他们的名字?

swift - "??"的使用不明确

ios - 如何在 Swift 中基本实现委托(delegate)?

android - redux state 在 react native 中在内存中保留多长时间

ios - XMLDictionary 不解析完整的 XML 数据

objective-c - if else 语句的预期表达式错误

iphone - iOS:Interface Builder 的困惑

iphone - 制作视频缩略图时CMTimeMake崩溃