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

时间:2010-01-27 13:00:59

标签: iphone debugging uiview uiviewcontroller

我有一个UIViewController初始化了一个正确的框架,但是在我的代码中某处框架被破坏了,我很难找到它。

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

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

有没有办法监视私有API的更改?我猜不是,因为变量基本上是“隐藏的”,因此您无法准确指定watch的内容。

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

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

3 个答案:

答案 0 :(得分:5)

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

@implementation MyTableView

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

@end

然后使用调试器向其添加断点并检查它何时被调用。最终,您将看到帧何时发生变化以及变化来自何处。

答案 1 :(得分:1)

答案 2 :(得分:0)

您可以创建一个ivar,view2,然后在loadView方法中将其分配给您的视图。这应该使您能够像普通变量一样观看它。