Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
键值编码UIView';斯瓦尔斯_Uiview_Calayer_Key Value Observing_Key Value Coding - Fatal编程技术网

键值编码UIView';斯瓦尔斯

键值编码UIView';斯瓦尔斯,uiview,calayer,key-value-observing,key-value-coding,Uiview,Calayer,Key Value Observing,Key Value Coding,我感兴趣的是在UIView发生更改时运行一些方法,无论是通过帧更改还是仿射变换。我的最佳想法是通过观察以下各项的值变化来实现: myView.frame和myView.transform 但是,UIViews的视图部分不是关键值。幸运的是,CALayer是视图的模型部分。所以我喜欢: [self.layer addObserver:self forKeyPath:@"transform" options:(NSKeyValueObservingOptionNew) context:NU

我感兴趣的是在UIView发生更改时运行一些方法,无论是通过帧更改还是仿射变换。我的最佳想法是通过观察以下各项的值变化来实现:

myView.frame
myView.transform

但是,UIViews的视图部分不是关键值。幸运的是,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 {

从来没有人打过电话。有什么好处?有没有更好的方法来观察UIView框架和转换中的更改?

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