self.view.frame/bounds 的 UIViewController 在 vi​​ewDidLoad 和 viewWillAppear 之间发生了变化 iOS8

self.view.frame/bounds of UIViewController changed between viewDidLoad and viewWillAppear iOS8

我的 iPhone 应用程序中的视图有一个非常奇怪的问题。

我有两个 UIViewController subclasses AB

class BUIViewController (我们称之为 b)是从 UIViewController 的 [=] 内部的方法调用的16=](a)。 但是当显示 b 时,b 的 "root" 视图的框架和边界在 viewDidLoadviewWillAppear 的调用之间发生了神奇的变化。 我不知道为什么会这样。据我所知,我所有的其他观点都没有这个问题。

这些是框架和界限:

viewDidLoad中:

self.view.frame: {0, 0}, {375, 667}

self.view.bounds: {0, 0}, {375, 667}

viewWillAppear: 中:

self.view.frame: {0, 64}, {375, 554}

self.view.bounds: {0, 0}, {375, 554}

我做了一个截图来演示这个问题。 黄色区域是bself.view。红色和绿色的是 self.view 的子视图。它们只是用于我的布局。我不认为它们对 self.view 框架或边界有任何影响。

有谁知道导致此问题的原因吗?

好的,经过几个小时(字面意思!)的调试,我发现了我的错误:我忘记在我的自定义 init 方法中调用 self = [super init];。这导致了一些奇怪的行为。

感谢您的宝贵意见!