如何检测UIView何时改变大小?

Sam*_*Sam 5 iphone debugging uiviewcontroller uiview

我有一个UIViewController用正确的框架初始化,但是在我的代码中,框架被破坏了,我很难找到哪里.

在这种情况下,它通常watch对调试器中的变量很方便,但是我无法在变量视图中访问controller-> view-> frame属性,因为它不是变量,它是一个属性(令人惊讶的是)

在变量显示中钻进UIView显示了一些东西,但我无法与框架相关,我想也许会有,layer但事实并非如此.

有没有办法监视私有API的变化?我猜不是,因为变量基本上是"隐藏的",所以你无法准确指定watch.

或者,我可以使用其他方法吗?我已经尝试了子类化UIView,设置我的UIViewController的视图指向这个子类并打破setFrame方法,但它似乎不起作用.

编辑:子类化UIView方法DID工作,我只需要将视图设置为指向我的测试子类viewDidLoad而不是init方法.让这个问题保持开放,因为我不确定这是否是解决这类问题的最佳方式......

Mar*_*c M 6

对要跟​​踪的视图进行子类化并重写setFrame方法:

@implementation MyTableView

- (void)setFrame:(CGRect)frame;
{
    NSLog(@"%@", frame);
    [super setFrame:frame];
}

@end
Run Code Online (Sandbox Code Playgroud)

然后使用调试器向其添加断点并检查它何时被调用.最终,您将看到框架何时更改以及更改的来源.

  • 使用自动布局约束时可能无法调用此方法. (6认同)