Xcode 如何检测视图的属性已更改?
Xcode how to detect a view's properties changed?
如何检测视图的 x、y、宽度或高度已更改?
我想实现一旦一个视图的属性发生变化,另一个视图的位置就会重新组织。
例如,我有一个具有动态高度的网络视图。每次 webViewDidFinishLoad 我都会改变 webView 的高度,然后其他视图的位置将根据 webview.frame.
我一直在考虑更改委托函数 webViewDidFinishLoad 中所有视图的位置。但是我的观点太多了。
我想知道我是否可以使用“Key-Value Observing”实现此行为
如果可以,如何实现。
//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
The key path, relative to the receiver, of the property to observe. This value must not be nil.
change
A dictionary that describes the changes that have been made to the value of the property at the key path keyPath relative to object.
您可以使用 Delegate
或 NSNotificationCenter
将值推送到持有其他视图的控制器。
希望这对您有所帮助。
如何检测视图的 x、y、宽度或高度已更改?
我想实现一旦一个视图的属性发生变化,另一个视图的位置就会重新组织。
例如,我有一个具有动态高度的网络视图。每次 webViewDidFinishLoad 我都会改变 webView 的高度,然后其他视图的位置将根据 webview.frame.
我一直在考虑更改委托函数 webViewDidFinishLoad 中所有视图的位置。但是我的观点太多了。
我想知道我是否可以使用“Key-Value Observing”实现此行为
如果可以,如何实现。
//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
The key path, relative to the receiver, of the property to observe. This value must not be nil.change
A dictionary that describes the changes that have been made to the value of the property at the key path keyPath relative to object.
您可以使用 Delegate
或 NSNotificationCenter
将值推送到持有其他视图的控制器。
希望这对您有所帮助。