kvo

Posted lgx联盟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kvo相关的知识,希望对你有一定的参考价值。

使用

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

//添加监听者
[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);
}

 



 

以上是关于kvo的主要内容,如果未能解决你的问题,请参考以下文章

iOS KVO详解

KVO exc_bad_access(代码=1)

iOS KVO详解

NotificationCenter KVC KVO Delegate总结

iOS开发底层之KVO探索下 -18

iOS开发底层之KVO探索下 -18