iOS KVO的简单介绍

2016-10-20  本文已影响20人  哔哩哔哩智能喵
    /**
     *  添加KVO(也叫观察者模式)
        addObserver:观察者 谁想监听mainView
        forKeyPath:监听mainView的什么属性
        options:mainView的属性发生怎样的改变
        注意:只要监听的属性一改变就会调用,observeValueForKeyPath方法,通知有新得值
        在self.mainView销毁的时候,需要移除观察者
     */
    [self.mainView addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionNew context:nil];
}
/**
 * 当监听到object的keyPath属性发生了改变
 * object:改变的对象
 * keyPath:监听的属性
 * change:属性的一些详情
 */
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
{
    NSLog(@"%@",NSStringFromCGRect(self.mainView.frame));
    if (self.mainView.frame.origin.x > 0) {
        self.rightView.hidden = NO;
    }else if(self.mainView.frame.origin.x < 0 ){
        self.rightView.hidden = YES;
    }
}
//对象销毁时调用,移除观察者
-(void)dealloc
{
    [self.mainView removeObserver:self forKeyPath:@"frame"];
}

拖拽手势和kvo

上一篇 下一篇

猜你喜欢

热点阅读