KeypathObserver
KVO observing with simple syntax.
Requirements
Swift 3.0, iOS 8.0
(Swift 2.3, use version 0.6.0)
Example
class ViewController: UIViewController {
var view: UIView?
var centerObserver: KeypathObserver<UIView, CGPoint>?
var colorObserver: KeypathObserver<UIView, UIColor>?
deinit {
centerObserver = nil
colorObserver = nil
}
override func viewDidLoad() {
super.viewDidLoad()
let view = UIView()
self.centerObserver = KeypathObserver(
object: view,
keypath: #keyPath(UIView.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: #keyPath(UIView.backgroundColor),
valueTransformer: { $0 as? UIColor },
valueUpdated: { newColor in
print("newColor: \(newColor)")
}
)
view.backgroundColor = UIColor.redColor()
view.backgroundColor = nil
self.view = view
}
}
Installation
Carthage
github "nixzhu/KeypathObserver" >= 1.0.0
CocoaPods
pod 'KeypathObserver', '~> 1.0.0'
Contact
NIX @nixzhu
License
KeypathObserver is available under the MIT License. See the LICENSE file for more info.