2009-08-19 1 views
1

Я заинтересован в запуске некоторых методов при изменении моего UIView либо с помощью изменения рамки, либо с помощью аффинного преобразования. Моя лучшая идея - сделать это, наблюдая изменения значений для:ключ-значение-кодирование ivars UIView

myView.frame и myView.transform.

Однако, часть представления UIView не является жалобой по ключевому значению. В Fortunatly модельная часть представления, CALayer. Поэтому я настраиваю как:

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

В viewDidLoad: часть вида. Я сделал то же самое для клавиши «frame». Но когда вид изменяется, либо путем перемещения вид вокруг в нем супер вид, или аффинных преобразований, метод:

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

никогда не вызывается. Что дает? Есть ли лучший способ наблюдать изменения в кадре UIViews и преобразовывать?

ответ

2

Я не думаю, что соответствие KVC подразумевает соблюдение KVO. Я думаю, что я читал, что KVO недоступен для свойств CALayer из-за соображений производительности.