是什么更改了viewWillAppear和viewWillLayoutSubviews之间的子视图框架?

时间:2012-10-15 13:23:13

标签: objective-c ios uiviewcontroller subview

这是一个非常简单的设置,日志让我感到困惑:

我有一个UIViewController子类。没什么特别的。它的观点有一个子视图。我想在变换上做一些动画来缩放视图。在调试过程中,我发现了这个:

----- VIEWDIDLOAD <UIView: 0x9d77bc0; frame = (10 57; 300 206)...
----- VIEWWILLAPPEAR <UIView: 0x9d77bc0; frame = (10 57; 300 206)...
----- VIEWWILLLAYOUTSUBVIEWS <UIView: 0x9d77bc0; frame = (10 57; 460 206)...
----- VIEWDIDLAYOUTSUBVIEWS <UIView: 0x9d77bc0; frame = (10 57; 460 206)...
----- VIEWDIDAPPEAR <UIView: 0x9d77bc0; frame = (10 57; 460 206)...

此子视图的框架在-viewWillAppear和-viewWillLayoutSubviews的调用之间切换。我希望子视图的框架在-viewWillLayoutSubviews和-viewDidLayoutSubviews之间改变。

willAppear和willLayout之间会发生什么?

Xcode 4.5.1,iOS 6

1 个答案:

答案 0 :(得分:1)

我不知道确切的答案,但你应该能够通过继承视图并实现覆盖setFrame:的覆盖来找到它只调用super中的那个。设置断点并查看调用堆栈。