//添加监听者
[self.tableView addObserver: self forKeyPath: @"contentOffset" options: NSKeyValueObservingOptionNew context: nil];
/**
* 监听属性值发生改变时回调
*/
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
{
CGFloat offset = self.tableView.contentOffset.y;
CGFloat delta = offset / 64.f + 1.f;
delta = MAX(0, delta);
[self alphaNavController].barAlpha = MIN(1, delta);
}
//移除观察者
- (void)dealloc
{
[self.view removeObserver:self forKeyPath:@"tag"];
[super dealloc];
}
//观察属性
//参数1: 观察者对象
//参数2: 被观察者的成员变量(属性名)
//参数3: 在观察者方法中,保存的是新值还是旧值
//参数4: 观察者方法中传递值
[self.view addObserver:self forKeyPath:@"tag" options:NSKeyValueObservingOptionNew context:@"测试"] ;
self.view.tag = 1000;
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"%@",keyPath);
NSLog(@"%@",object);
NSLog(@"%@",change);
NSLog(@"%@",context);
}