/KeypathObserver

KeypathObserver helps you do KVO observing.

Primary LanguageSwiftMIT LicenseMIT

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.