1

我有兴趣在我的 UIView 更改时运行一些方法,无论是通过帧更改还是仿射变换。我最好的想法是通过观察以下值的变化来做到这一点:

myView.framemyView.transform

但是,UIViews 的视图部分不是 Key-Value 投诉。幸运的是视图的模型部分,CALayer 是。所以我设置如下:

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

在 viewDidLoad: 视图的一部分。我对“框架”键做了同样的事情。但是当视图改变时,无论是通过在它的超级视图中移动视图,还是通过仿射变换,方法:

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

永远不会被调用。是什么赋予了?有没有更好的方法来观察 UIViews 框架的变化和变换?

4

1 回答 1

2

我不认为 KVC 合规性意味着 KVO 合规性。我想我读到由于性能考虑,KVO 不适用于 CALayer 属性。

于 2010-03-03T19:26:34.213 回答