XMG 抽屉效果

1.比如说我创建了3个View

-(void)viewDidLoad{

 [ super viewDidLoad];

[self setUpChild] ;

  

     UIPanGestureRecognizer *pan=[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)];

     [ self.view addGestureRecognizer:pan]

   

  

    // Observer:观察者 谁想监听

    // KeyPath:监听的属性

    // options:监听新值的改变


    [_mainV addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionNew context:nil];

  


}

-

//如果想要监听一个对象的某个属性可以使用KVO

// 只要监听的属性一改变,就会调用观察者的这个方法,通知你有新值

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context

{

    NSLog(@"%@",NSStringFromCGRect(_mainV.frame));

    if (_mainV.frame.origin.x > 0) { // 往右边移动,隐藏蓝色的view

        _rightV.hidden = YES;

    }else if (_mainV.frame.origin.x < 0){ // 往左边移动,显示蓝色的view

        _rightV.hidden = NO;

}    


使用KVO之后一定要记得在dealloc方法中移除监听.当对象被销毁的时候移除观察者

-(void)dealloc{

   [_main removeObserve:self keyPath:@"frame"];

}


    


//创建对应的View

- (void)setUpChildView

{

    // left

    UIView *leftV = [[UIView alloc] initWithFrame:self.view.bounds];

    

    leftV.backgroundColor = [UIColor greenColor];

    

    [self.view addSubview:leftV];

    

    _leftV = leftV;

    

    // right

    UIView *rightV = [[UIView alloc] initWithFrame:self.view.bounds];

    

    rightV.backgroundColor = [UIColor blueColor];

    

    [self.view addSubview:rightV];

    

    _rightV = rightV;

    

    // main

    UIView *mainV = [[UIView alloc] initWithFrame:self.view.bounds];

    

    mainV.backgroundColor = [UIColor redColor];

    

    [self.view addSubview:mainV];

    

    _mainV = mainV;

}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值