监听UI控件frame变化的正确姿势

一说到监听.大家可能想到的是addObserve:
没错,我想讲的就是observer,但是可能和大家想的有些许不同.

用习惯了Masonry.其实也就是苹果的AutoLayout系统.对于一些东西就渐渐的忽略了.比如当你设置center.equto比如self.view的时候.如果转屏.frame会不会改变呢.(假定大小固定的情况下).
大家也许觉得x.y可能变化了,那么frame肯定改变了.

其实对于addObserver来说不是这么回事.不信的话你可以试试,完全收不到上面提到的这种情况下的观察.

对于这种情况,有些人提出了,添加一个Timer来监听UI控件的frame的改变.其实这能完成需求,但是我不推荐这么做.

正确的姿势

据我猜想.设置center虽说会影响frame的x.y,但是在setCenter的内部可能并不是直接self.frame.xx = xx;
有可能是使用KVC给center的x赋值,也有可能是frame取值的时候才会看到x的改变.

对于我们来说,frame的变化有可能是bounds改变.frame改变.center改变.那么我们监听的时候就需要加三遍,才能获取完整的监听

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值