微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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中,它不能这样做除非您将属性显式标记为动态.)

原文地址:https://www.jb51.cc/iOS/337314.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐