Ios 图幅在加载后会发生变化

Ios 图幅在加载后会发生变化,ios,Ios,看来我可能误解了什么。我有一个全屏的iPad应用程序,没有状态栏或其他任何东西。它也总是在横向模式,所以我不需要担心肖像。我使用正确的框架以编程方式创建视图,但是当视图实际加载并显示时,框架似乎不同 以下是我用来生成视图的代码(我在下面的视图中添加了更多内容,但它们与我的问题无关): 在视图出现时,我记录self.view的框架并获取{{-128,-128},{1024768}。大小正确,但原点已更改。为了看看会发生什么,我尝试用128128的原点初始化视图-这产生了一个{{0,-256},{1

看来我可能误解了什么。我有一个全屏的iPad应用程序,没有状态栏或其他任何东西。它也总是在横向模式,所以我不需要担心肖像。我使用正确的框架以编程方式创建视图,但是当视图实际加载并显示时,框架似乎不同

以下是我用来生成视图的代码(我在下面的视图中添加了更多内容,但它们与我的问题无关):

在视图出现时,我记录self.view的框架并获取
{{-128,-128},{1024768}
。大小正确,但原点已更改。为了看看会发生什么,我尝试用128128的原点初始化视图-这产生了一个
{{0,-256},{1024768}
帧,我也无法解释


谁能告诉我到底发生了什么事?我试着设置自动调整大小的面具之类的东西,但这并没有改变任何事情。我有点卡住了。

所有的
ui视图
'正确的几何图形只有在
视图出现后才能使用:
方法。在此之前,视图层次的几何图形尚未设置,且值不准确。如果您需要知道、更改、计算帧,则在出现
view:
method之前不应执行此操作。
更新:
ui视图
覆盖
-loadView
方法初始化
self.view
。如果您使用的是nib文件,这将自动为您完成,您不应覆盖此方法。此方法中不提供真实视图几何体。
-viewDidLoad
是设置视图层次结构的位置。这是您通常初始化子视图并将其添加到
self.view
中的位置。您可以执行一些较重的操作,只要它们不需要多线程。视图几何图形在此方法中也不可用-自动调整遮罩的大小在此处仍然无效,并且您不能依赖于
frame
属性。
-视图将出现:
是正确设置所有内容、调整视图大小的地方-如果要计算和设置其他几何图形,请使用此方法,
属性正确。此处仅执行轻量级操作,因为此方法不应阻塞主线程,并且应尽可能快地执行

viewdide也是如此:

根本没有意义-为什么从nib加载的视图在加载时可以正确设置其几何图形,但在代码中创建视图时(在加载nib的同时设置所有几何图形)直到加载过程的后期,我们才能设置任何帧?一般做法是在
loadView
中,您只能初始化
self.view
您仍然可以使用硬编码帧初始化它,但是自动调整大小的遮罩在
视图出现之前不会有任何效果:
方法,并且您不能在
viewDidLoad
中依赖它们,因为在这种方法中,视图层次结构是从nib文件或手动设置的。我将更新关于这些方法以及应该做什么和在哪里做的回答。
- (void)loadView{
    self.view = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 1024.0, 768.0)];

    backgroundImage = [[UIImageView alloc] initWithFrame:self.view.bounds];
    [backgroundImage setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
    [self.view addSubview:backgroundImage];
}