MKMapView:我如何复制Apple的“查找我的iPhone /朋友”应用程序中看到的“反弹变焦”?

时间:2016-05-23 05:48:31

标签: ios iphone swift mkmapview mapkit

背景

MKMapView 附带了几种方法,可让您设置可见地图rect(或区域,坐标范围等)。这些方法具有动画参数,当设置为true时,使用大约0.3秒的线性动画来动画更改。

问题

虽然这很好,但我想在点击地图时复制Apple在查找我的朋友查找我的iPhone 应用中使用的动画。如果你自己尝试一下,你会发现一个非线性曲线的动画要快得多(大约0.15秒)。现在,我们称之为“反弹 - 缩放”过渡。

我想要复制非线性动画曲线和自定义动画持续时间。在UIView的 animateWithSpring ... 方法中包装地图更新似乎不起作用(当然我可能做错了)。非常清楚Apple可能有能力在MKMapView的API中执行不公开的功能,但Apple的App Store分布式应用程序通常似乎坚持他们关于公共API的指导原则。

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

示例代码

有关试图执行上述操作的游乐场,请参阅here。请注意,MKMapView似乎考虑了动画持续时间,但不是弹性,比如找我的iPhone /找我的朋友。

1 个答案:

答案 0 :(得分:2)

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