2009-08-19 3 views
1

Ich möchte einige Methoden ausführen, wenn mein UIView entweder durch eine Frame-Änderung oder eine affine Transformation geändert wird. Meine beste Idee ist, dies zu tun, indem Sie Wertänderungen beobachten für:Schlüssel-Wert-Codierung eines UIViews Ivars

myView.frame und myView.transform.

Der Ansichtsteil von UIViews ist jedoch keine Key-Value-Beanstandung. Fortunatly der Modellteil der Ansicht, der CALayer ist. Also ich Setup wie:

[self.layer addObserver:self forKeyPath:@"transform" 
options:(NSKeyValueObservingOptionNew) context:NULL]; 

In der ViewDidLoad: Teil der Ansicht. Ich habe das selbe für den "Rahmen" Schlüssel getan. Aber wenn die Ansicht geändert wird, entweder durch die Ansicht bewegen in es ist super Sicht oder durch affine Transformationen, wobei das Verfahren:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
change:(NSDictionary *)change context:(void *)context { 

nie aufgerufen. Was gibt? Gibt es eine bessere Möglichkeit, Änderungen in einem UIViews-Frame zu beobachten und zu transformieren?

Antwort

2

Ich glaube nicht, KVC-Konformität bedeutet KVO-Konformität. Ich glaube, ich habe gelesen, dass KVO aufgrund von Leistungsüberlegungen nicht für CALayer-Eigenschaften verfügbar ist.