背景
MKMapView 附带了几种方法,可让您设置可见 map 矩形(或区域、坐标跨度等)。这些方法有一个 animated 参数,当设置为 true 时,将使用大约 0.3 秒的线性动画来为变化设置动画。
问题
虽然这很好,但我想复制 Apple 在他们的 Find my Friends 和 Find 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/