【发布时间】:2011-10-22 19:44:12
【问题描述】:
在我的基于 NavigationController 的 iPhone 应用程序中,我有一些元素 a、b、c 另一个视图 X 的子视图。当我推动控制器获取此视图时,在 viewWillAppear 上,我调整了a、b 和 c 根据 X 的大小来正确处理设备方向。问题是 X 的大小在 viewWillAppear 被调用后被改变。我将 X 子类化并编写了一个 setFrame 方法,以便设置断点并尝试查找原因。下面是图像的链接(由于缺少点,我无法直接发布图像)显示 viewWillAppear 处的中断,以及 viewWillAppear 后 setFrame 处的中断与调用堆栈。我需要帮助找出为什么 X 的大小会以这种方式改变。谢谢。
在 viewWillAppear 中: http://img718.imageshack.us/img718/9898/viewwillappearbreak.th.png
viewWillAppear 在子类 setFrame 处中断后: http://img703.imageshack.us/img703/7995/afterviewwillappear.th.png
提前致谢。 (我希望图像能正确显示)。
【问题讨论】:
-
您对 viewWillAppear 和 viewDidAppear 的实现是什么样的?代码 sn-p 会很好。特别是,您何时从自己的实现中调用 [super viewWillAppear] 和 [super viewDidAppear]?
-
另外,您是否考虑过在视图中使用自动调整弹簧来让组件在方向改变时调整大小和/或正确定位自己?此外,仔细检查设置了哪些自动调整大小行为可能是个好主意。
-
顺便说一句,这可能与调用 layoutSubviews 有关,在这种情况下,以下答案可能有用:stackoverflow.com/questions/728372/… 顶部的答案有一个有用的博客文章的链接,该链接与何时调用 layoutSubviews 有关.
-
实际上我在改变方向时所做的尺寸调整更多地是将图像的比例调整到可用的视图空间,所以自动调整弹簧是不够的。但是,无论如何,这是一个很好的指针。谢谢。
标签: iphone objective-c cocoa-touch uiviewcontroller uinavigationcontroller