从NIB加载视图返回零帧视图 - 该怎么办?

时间:2013-04-24 17:33:26

标签: ios objective-c

我有一个视图控制器,它正在创建另一个视图来控制并将结果视图添加到其子视图中。但问题是视图是用frame(0,0,0,0)创建的。

如果我手动设置框架就可以,但我不想手动设置框架,我想要自动调整大小。这是代码:

GridViewController *gridVC = [[GridViewController alloc] initWithNibName:@"GridView" bundle:nil];
[self addChildViewController:gridVC];
[self.view addSubview:gridVC.view];

self.view具有正常框架,gridVc.view具有(0,0,0,0)框架;

在xib中我有几个视图,View已正确连接,文件所有者设置正确,一切看起来都不错。

1 个答案:

答案 0 :(得分:1)

在进行这样的视图控制器控制时(顺便说一句,我希望你也可以在那里进行didMoveToParentViewController调用),我总是设置frame,例如

gridVC.view.frame = self.view.bounds;

不可否认,我经常将我的孩子视图添加到一个不占用整个屏幕的容器中,所以在这种情况下它是至关重要的,但是,我仍然不确定为什么你只是沉默寡言frame

一旦你这样做,假设你正确设置自动调整大小的掩码,一切都将根据需要自动调整大小。

仅供参考,Apple在他们的示例代码中添加子视图时设置frame(参见Listing 14-1)。

显然,如果你使用自动布局,你将设置约束(或使用translatesAutoresizingMaskIntoConstraints),但想法是一样的。