【问题标题】:UIView frame coming as zero (0 0; 0 0) when view appears second time当视图第二次出现时,UIView 帧为零 (0 0; 0 0)
【发布时间】:2013-08-01 10:56:26
【问题描述】:

我正在为我的 iOS 应用程序使用导航控制器 (UINavigationController),并且正在使用 Storyboard。

我的视图控制器 (VC) 中有几个 UIViews(充当子视图),并且我在 Xcode 中为这些 UIViews 设置了出口。

我的第一个 VC 在我的导航中充当一种主页(应用程序的主页)。
当第二个 VC 第一次出现时,我的第二个 VC 的所有子视图都会正确显示。
但是,如果我回到主页(或第一个 VC)并返回到第二个 VC,那么我的子视图不会显示。

我在第二个 VC 的 viewWillAppear 方法中设置了一个断点,下面是其中一个视图的框架描述。

第一次:frame = (20 20; 280 150)
去首页VC,第二次来VC:frame = (0 0; 0 0)

你能指导我如何调试这个问题吗?如果需要任何其他信息,请告诉我。谢谢。

【问题讨论】:

  • 覆盖 setFrame: 并打破它
  • 您的视图大小在执行过程中发生了变化。因此,您可以使用 setFrame 如下: ViewName.frame = CGRectMake(x, y, w, h);
  • 谢谢。在viewWillAppear 中显式设置frame 会起作用,因为它每次都会设置我的UIView 的框架。但我无法弄清楚是什么首先打破了我的框架。有那个方向的指针吗?

标签: ios uiview


【解决方案1】:

当视图控制器出现未对齐或某些子视图在第二次加载时似乎丢失时,这意味着某些东西(我无法弄清楚)正在破坏您的布局(或者在执行过程中某些东西改变了您的视图大小)。因此,您在viewWillAppear 方法中设置UIViews 的frames(通过使用frame 属性),它将正常工作。

感谢@mital 和@xlc 的提示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    • 2015-03-22
    • 1970-01-01
    相关资源
    最近更新 更多