Apple的文档没有说明loadView的正确实现.
我发现如果你像这样实现loadView:
- (void)loadView
{
self.view = [[UIView alloc] init];
}
Run Code Online (Sandbox Code Playgroud)
...然后你会得到不同的行为,而不是你根本没有实现它.特别是,在一个20行的项目中,我发现viewWillAppear被调用为self.view的零大小框架 - 除非你使用Apple的默认版本的loadView.
在Google上看,有很多"教程"提供了明显错误的loadView实现 - 例如强制设置大小为(320,480),因为教程作者"发现它可行,如果我这样做".
我想知道正确的实现应该是什么.
注意:在上面的例子中,我将它添加到AppDelegate中的视图层次结构中,如下所示:
[self.window addSubview:(UIViewController*).view];
Run Code Online (Sandbox Code Playgroud)
我相信,在存在UINavigationController或UITabBarController的情况下,Apple会做一些额外的魔术 - 作为副作用 - 导致单行loadView实现正常工作.但是我想写得正确,所以它总能奏效!
注意:我已尝试在根视图上设置自动调整掩码,但它不会改变发生的情况:
- (void)loadView
{
self.view = [[UIView alloc] init];
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}
Run Code Online (Sandbox Code Playgroud)