zoukankan      html  css  js  c++  java
  • 利用KVO监视一个view的frame

    首先,keyPath一定是frame,而不是frame.origin.x之类的路径,因为再点下去的话,就是访问结构体内部的值了,KVO是无法检测的,会报错找不到KeyPath。

    代码如下:

    1     [_funcMenuVC.view addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew context:nil];

    在KVO对应的方法里打印监测到的值,会发现是一个NSRect类型,为了方便操作需要转化为CGRect,经过尝试发现KVO内部其实是用NSValue包装了被监测的结构体,所以首先需要将change的内容转化为NSValue,然后解出结构体:

    1     CGRect rect = [((NSValue *)[change objectForKey:@"new"]) CGRectValue];

    这样就可以进行进一步操作了。

  • 相关阅读:
    BZOJ2759 一个动态树好题
    BZOJ3527 力
    HDU6069 String
    HDU5069 Harry And Biological Teacher
    AC自动机初步
    HDU6155 Subsequence Count
    while与until
    RADI
    linux压缩及归档
    挂载与卸载
  • 原文地址:https://www.cnblogs.com/Steak/p/3762730.html
Copyright © 2011-2022 走看看