UiviewController LifeCycle函数loadView()框架问题



我一直在与故事板合作,直到我最近移动使用代码创建控制器。

我遵循我们的编码标准,在loadView()函数中创建一些子视图,其中第一行是super.loadView()

从我观察到的情况下,我调用super.loadView()之后,self.view的帧已经正确设置为使用ViewController本身,该框架正是ViewController的框架。

我更多的经验同事说这是100%在过去的不应该给u CGRectZero的工作,也许我不应该依靠它。

我想听听其他人的更多建议。

这是我的示例项目设置:1.创建一个简单的proj2.在第一个VC中添加一个按钮3.通过代码创建第二个VC,在第二VC中覆盖loadView()函数,在那里致电super.loadView()并打印self.view.bounds NEXT LINE4. self.present或在按钮操作中使用VC1的导航控制器以呈现或推到VC25.它总是给我第二个VC的正确框架。

请让我知道。

-------------编辑-------------------------

为了澄清我的问题,我知道诸如viewDidLayoutSubviewslayoutSubViews之类的生命周期功能以返回正确的视图。我是不是问这些。

我的问题是为什么loadView() 返回我正确现在。

不幸的是,我无法就引擎盖下发生的事情提供任何见解 - 我能做的,是告诉您,根据文档,您不应该致电super.loadView():blockquote>

您可以覆盖此方法,以便手动创建视图。如果您选择这样做,请将视图层次结构的根视图分配给视图属性。您创建的视图应该是唯一的实例,不应与任何其他视图控制器对象共享。您的自定义实现此方法不应调用Super。

(强调我的(

1(我一直在使用故事板,直到我最近仅使用代码创建控制器。

我遵循我们的编码标准,在loadView((函数中创建一些子视图,其中第一行是super.loadview((。

  • 由于您使用的是XIB,因此由于 If you use Interface Builder to create your views and initialize the view controller, you must not override this method.的 CC_14而在Apple Docs中的LOADVIEW中使用ViewDidload。

2(我的更多经验同事说这是100%在过去不应该给你的cgrectzero的工作,也许我不应该依靠它。

我想听听其他人的更多建议。

  • viewController的适当帧。至于其子视图,viewDidLayoutSubviews是您需要的
  • LoadView和ViewDidload中的视图框架是笔尖框架大小。您的同事是正确的,它将无法返回适当的尺寸。在运行iPad应用程序中使用ViewController呈现iPad应用程序时,这是值得注意的,或在不同的屏幕尺寸上运行您的应用程序,与XIB中的设备相比
  • 对比

另外,这个问题与您的问题直接相关:为什么我必须在ViewDidload中手动设置视图的框架?

相关内容

  • 没有找到相关文章

最新更新