KVO 改变导航栏的背景色透明度

时间:2021-05-24 14:48:45

KVO的使用非常简单,使用KVO的要求是对象必须能支持kvc机制——所有NSObject的子类都支持这个机制。拿上面的渐变导航栏做,我们为tableView添加了一个监听者controller,在我们滑动列表的时候,会计算当前列表的滚动偏移量,然后改变导航栏的背景色透明度。


2
3
4
5
6
7
8
9
10
11
12
//添加监听者
[self.tableView addObserver: self forKeyPath:@"contentOffset" options: NSKeyValueObservingOptionNew context: nil];
/**
*  监听属性值发生改变时回调
*/
-(void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context
{
    CGFloatoffset=self.tableView.contentOffset.y;
    CGFloatdelta=offset/64.f+1.f;
    delta=MAX(0,delta);
    [selfalphaNavController].barAlpha=MIN(1,delta);
}