ios – 在Swift中动画MapKit注释坐标变化?

前端之家收集整理的这篇文章主要介绍了ios – 在Swift中动画MapKit注释坐标变化?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Swift中的iOS 8中使用MapKit时,如何使自定义注释的地图位置更改动画成为可能?我在说:
UIView.animateWithDuration(0.25) {
    var loc = ann.coordinate
    loc.latitude = loc.latitude + 0.0005
    loc.longitude = loc.longitude + 0.001
    ann.coordinate = loc
}

…其中ann是自定义注释,MyAnnotation.注释是跳跃,而不是动画,到新的坐标位置.

令人讨厌的事情是,如果我在Objective-C中编写MyAnnotation,动画效果会很好.但是如果我写在Swift,我再也不会得到动画了!

就在FYI,这里是MyExnotation的Swift代码

class MyAnnotation : NSObject,MKAnnotation {
    var coordinate : CLLocationCoordinate2D
    var title: String!
    var subtitle: String!

    init(location coord:CLLocationCoordinate2D) {
        self.coordinate = coord
        super.init()
    }
}

解决方法

你差点就对了!只需更改MyAnnotation实现中的这一行:
var coordinate : CLLocationCoordinate2D

到这个:

dynamic var coordinate : CLLocationCoordinate2D

这将修复它.

为什么这么重要?因为注释动画依赖于KVO(键值观察).在Swift中,除非将其标记为动态,否则属性不是关键值. (要获得更多的技术性,这反过来又是因为KVO观察通过调整属性设置器方法的实现来实现 – 运行时到达你的类并且改变了该属性的setter代码,但是在Swift中,它不能这样做除非您将属性显式标记为动态.)

猜你在找的iOS相关文章