我正在开发一个使用MKMapView跟踪用户进度的应用程序,我想我会采用iOS 7 Apple Maps方法使用标注按钮来开始跟踪。但是在我的情况下,用户保持在同一视图中,因此我需要修改按钮以指示跟踪已在进行中。
我创建了一个简单的动画,并在点击按钮时将其添加到按钮的图层。工作良好。如果用户解散然后带回标注,则会出现问题。尽管didSelectAnnotation中的代码将动画放回到图层上,但是呈现的视图没有动画。根据这篇文章:
UIButton Not Loading Properly For MKAnnotationView
这是因为在调用didSelectAnnotation之前准备了注释视图。它必须提前准备好,因为当重新显示标注时,不会调用viewForAnnotation(我可以做到的另一个地方)。
我现在想不出有什么方法可以让这项工作,但我希望那里有人会有答案。
编辑:
我尝试将动画添加到viewForAnnotation中的按钮,然后暂停它,打算在点击按钮时恢复它。但是,当按下按钮时,它上面不再有动画 - mapkit似乎已将其剥离。它位于didSelectAnnotation中,但在两者之间它消失了。
我可以将动画添加到整个MKAnnotationView中,但这并不像预期的那样 - 整个动画都会动画,包括标注,看起来很奇怪。此外,暂停此视图上的动画会干扰显示标注。
我在这里尝试做的就是让按钮图像“脉冲”表示它已被点击并且正在进行跟踪,同时让它看起来可以点亮,以便用户知道他们可以再次点按它以停止跟踪。
我有一种感觉我在这里是SOL ...请某人,证明我错了!
答案 0 :(得分:0)
答案是使用完全自定义的标注。我使用以下帖子和示例代码作为指南,并且能够使其正常工作。
http://blog.asynchrony.com/2010/09/building-custom-map-annotation-callouts-part-1/ http://blog.asynchrony.com/2010/09/building-custom-map-annotation-callouts-part-2/