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:
- 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")
}
}
-
Gebruik van Combine (iOS 13+) — je kunt een
Publishermaken voor de eigenschap en je abonneren op de veranderingen. -
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.