使用简单语法的KVO观察。
Swift 2.3, iOS 8.0
class ViewController: UIViewController {
var view: UIView?
var centerObserver: KeypathObserver<UIView, CGPoint>?
var colorObserver: KeypathObserver<UIView, UIColor>?
override func viewDidLoad() {
super.viewDidLoad()
let view = UIView()
self.centerObserver = KeypathObserver(
object: view,
keypath: "center",
valueTransformer: { ($0 as? NSValue)?.CGPointValue() },
valueChanged: { oldCenter, newCenter in
print("oldCenter: \(oldCenter)")
print("newCenter: \(newCenter)")
}
)
view.center = CGPoint(x: 100, y: 100)
view.center = CGPoint(x: 200, y: 50)
self.colorObserver = KeypathObserver(
object: view,
keypath: "backgroundColor",
valueTransformer: { $0 as? UIColor },
valueUpdated: { newColor in
print("newColor: \(newColor)")
}
)
view.backgroundColor = UIColor.redColor()
view.backgroundColor = nil
self.view = view
}
}
建议使用CocoaPods或Carthage。
NIX @nixzhu
KeypathObserver根据MIT授权许可提供。有关更多信息,请参阅LICENSE文件。