在viewWillAppear之后查看大小更改

时间:2011-10-22 19:44:13

标签: iphone objective-c cocoa-touch uiviewcontroller uinavigationcontroller

在我的iPhone应用程序中,它基于一个NavigationController,我有一些元素a,b,c另一个视图X的子视图。当我按下控制器获取此视图时,在viewWillAppear上,我调整了大小和位置a,b和c根据X的大小来正确处理设备方向。问题是在调用 viewWillAppear之后,X的大小正在改变。我将X子类化并编写了一个setFrame方法,以便设置断点并尝试查找原因。下面是图片的链接(由于缺少点,我无法直接发布图片),显示viewWillAppear的中断,以及viewWillAppear后使用callstack在setFrame上的中断。我需要帮助才能找出为什么X的大小会以这种方式改变。感谢。

在viewWillAppear: http://img718.imageshack.us/img718/9898/viewwillappearbreak.th.png

在子类化的setFrame中查看后的viewWillAppear: http://img703.imageshack.us/img703/7995/afterviewwillappear.th.png

提前致谢。 (我希望图像能够正确显示)。

1 个答案:

答案 0 :(得分:0)

感谢我提供的有限信息的所有回复。我终于找到了问题的原因。我的nib文件包含一个工具栏(如果您使用的是导航控制器,我想这是件坏事)我也在调用

setToolbarHidden: NO

在我的导航控制器上。我是iPhone编程的新手,并且认为nib文件中的工具栏会以某种方式显示为导航视图工具栏。看来情况并非如此。我对问题发生原因的理解是:

  • 视图从笔尖加载了一个工具栏,导航控制器有一个可见的工具栏,因此我的X视图高度为328.(当调整到屏幕大小时,减去了2个工具栏的高度。导航控制器和视图中的控制器。
  • 在viewWillAppear之后,导航控制器代码显然找到了2个工具栏,因此它决定隐藏导航控制器中的工具栏,使我的X视图高度增加44(到372)。

我从nib文件中删除了工具栏,并通过调用

将工具栏项添加到导航控制器工具栏
setToolbarItems

在viewWillAppear之后,框架的高度保持不变。

感谢您的回复。我希望这些评论能让其他人面临同样的问题。