Skip to content

nixzhu/KeypathObserver

Repository files navigation

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.

About

KeypathObserver helps you do KVO observing.

Resources

License

Stars

Watchers

Forks

Packages

No packages published