如何检测视图的x,y,宽度或高度是否已更改?
我想实现一旦视图的属性发生变化,其他视图的位置就会重新组织。
例如,我有一个具有动态高度的webview。每次webViewDidFinishLoad我都会改变webView的高度,那么其他视图的位置将根据webview.frame进行更改。
我一直在想我改变了委托函数webViewDidFinishLoad中所有视图的位置。但我的观点太多了。
我想知道我是否可以使用"来实现此行为键值观察"
如果可以的话,如何实施它。
答案 0 :(得分:1)
//added KVO for webview
[webview addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionOld context:NULL];
//when observer changed would call:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if([keyPath isEqualToString:@"frame"]) {
//do something
NSLog(@"new:%@",[change objectForKey:NSKeyValueChangeNewKey]);
NSLog(@"old:%@",[change objectForKey:NSKeyValueChangeOldKey]);
}
}
//when you don't need kvo, remove observer
[webview removeObserver:self forKeyPath:@"frame"];
的keyPath
要观察的属性的关键路径,相对于接收器。该值不得为零。变化
一个字典,描述对键路径keyPath的属性值相对于对象所做的更改。
答案 1 :(得分:0)
您可以使用Delegate
或NSNotificationCenter
将值推送到持有其他视图的控制器。
希望这可以提供帮助。