iphone – 使用键值观察在UIView的框架上获得KVO回调

我想监视UIView的框架,边界或中心属性的变化。如何使用键值观察来实现这一点?
编辑:我不认为这个解决方案是足够彻底。这个答案是由于历史原因。看到我最新的答案在这里:http://stackoverflow.com/a/19687115/202451

你必须在frame-property上做KVO。 “self”在这里是一个UIViewController。

添加观察者(通常在viewDidLoad中完成):

[self addObserver:self forKeyPath:@"view.frame" options:NSKeyValueObservingOptionOld context:NULL];

删除观察者(通常在dealloc或viewDidDisappear中完成):

[self removeObserver:self forKeyPath:@"view.frame"];

获取有关更改的信息

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    if([keyPath isEqualToString:@"view.frame"]) {
        CGRect oldFrame = CGRectNull;
        CGRect newFrame = CGRectNull;
        if([change objectForKey:@"old"] != [NSNull null]) {
            oldFrame = [[change objectForKey:@"old"] CGRectValue];
        }
        if([object valueForKeyPath:keyPath] != [NSNull null]) {
            newFrame = [[object valueForKeyPath:keyPath] CGRectValue];
        }
    }
}

 
http://stackoverflow.com/questions/4874288/use-key-value-observing-to-get-a-kvo-callback-on-a-uiviews-frame

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:iphone – 使用键值观察在UIView的框架上获得KVO回调