我有以下设置。UIViewController框架
带有UIScrollView的pagingScrollViewController,因为它的视图(self.view = scrollView)。 在该scrollView中,我将一个rootViewController的视图添加为子视图。 rootViewController的视图是一个UIView,我在其上添加一个或另一个视图(取决于内部逻辑)。
UIScrollView被初始化为一个等于applicationFrame的框架,所以0,20,320,460。由于状态栏位于顶部,所以这很好。
将rootViewController的视图添加到滚动视图时出现问题。在rootViewController的创建过程中,它的视图是在-loadView中设置的,在我的情况下它仍然被注释掉。所以标准的appel loadView被处理。
它给了我一个也有0帧的视图,,320,460.这不是我想看到的,因为现在rootViewController的视图是从顶部删除了40个像素实际的iPhone屏幕。
现在,这当然很容易通过在-loadView中手动设置rootViewControllers视图或为其指定一个帧,其中y在-viewDidLoad中设置为0;
但我无法想象这就是苹果公司打算完成此任务的方式。我没有使用接口生成器,所以也许这就是问题所在,苹果打算使用IB,但是我固执地研究这个主题:)
我是否以错误的方式使用viewControllers?这似乎是将scrollView的逻辑从另一个视图的逻辑中分离出来的好方法。
将第二个UIViewController的视图添加到第一个UIViewController的视图的正确方法是什么?其中第一个viewController.view接收一个0,20,320,460的帧。而第二个controller.view一个帧0,0,320,460(所以基本上是第一个controller.view的边界)
这里有很多使用单词控制器和视图,希望问题很明显。
如何初始化rootViewController的视图框架? – Ravin 2011-04-13 11:39:45
我不是,那是工作中的魔法*。如果您不覆盖-loadView,系统会为您创建一个视图。不幸的是,一帧0,20,320,460。 – DIJ 2011-04-13 12:01:45
那就是答案本身。你的rootViewController有系统提供的0,20,320,460帧。所以当你将它添加到你认为正常的视图中时,它会相对较低,y = 20。 – Ravin 2011-04-13 12:06:15