Sobes.tech
Junior — Middle

Hoe kun je een abonnement implementeren op wijzigingen in de eigenschap alpha van een object of component?

sobes.tech AI

Antwoord van AI

Op iOS zijn er verschillende manieren om je te abonneren op wijzigingen in de eigenschap alpha van een object of component:

  1. Key-Value Observing (KVO) — stelt je in staat om veranderingen in objecteigenschappen te observeren.
class ViewObserver: NSObject {
    var view: UIView

    init(view: UIView) {
        self.view = view
        super.init()
        view.addObserver(self, forKeyPath: "alpha", options: [.new, .old], context: nil)
    }

    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if keyPath == "alpha" {
            if let newAlpha = change?[.newKey] as? CGFloat {
                print("Alpha veranderd naar \(newAlpha)")
            }
        }
    }

    deinit {
        view.removeObserver(self, forKeyPath: "alpha")
    }
}
  1. Gebruik van Combine (iOS 13+) — je kunt een Publisher maken voor de eigenschap en je abonneren op de veranderingen.

  2. Overschrijven van de eigenschap — als het je eigen klasse is, kun je een didSet-observer toevoegen:

class CustomView: UIView {
    override var alpha: CGFloat {
        didSet {
            print("Alpha is veranderd naar \(alpha)")
        }
    }
}

De keuze van methode hangt af van de context en compatibiliteitsvereisten.