UIViewController框架

时间:2011-04-13 11:14:01

标签: iphone ios uiview uiviewcontroller uiscrollview

我有以下设置。

使用UIScrollView作为其视图的pagingScrollViewController(self.view = scrollView)。 在该scrollView中,我将rootViewController的视图添加为子视图。 rootViewController的视图是一个UIView,我在其上添加一个或另一个视图(取决于内部逻辑)。

UIScrollView初始化为一个等于applicationFrame的帧,所以0,20,320,460。由于顶部的状态栏,这很好。

将rootViewController的视图添加到scrollview时会出现问题。在rootViewController的创建过程中,它的视图是在-loadView中设置的,在我的例子中它仍然被注释掉了。因此处理标准的appel loadView。

它给了我一个视图,它也有一个0, 20 ,320,460的框架。这不是我想看到的,因为现在rootViewController的视图被删除了40个像素从实际的iPhone屏幕顶部。

现在,通过在-loadView中手动设置rootViewControllers视图或在-viewDidLoad中为其指定y设置为0的帧,可以轻松解决这个问题。

但我无法想象这就是苹果打算这样做的方式。我没有使用界面构建器,所以也许这就是问题,苹果打算让我使用IB,但我对这个主题很顽固:)

我是否以错误的方式使用viewControllers?这似乎是一种很好的方法,可以将scrollView的逻辑与其他视图的逻辑分开。

将第二个UIViewController的视图添加到第一个UIViewController视图的正确方法是什么。其中第一个viewController.view接收0,20,320,460的帧。并且de second controller.view一个0,0,320,460的帧(所以基本上是第一个controller.view的边界)

在那里使用了很多控制器和视图这个词,希望问题很清楚。

1 个答案:

答案 0 :(得分:1)

回答我自己的问题......

拉文是对的。 在阅读了loadView方法和apple's view controller programming guide后,我得出的结论是,这是系统的默认行为。如果您还需要其他任何内容,请覆盖-loadView并自行完成。实际上,apple说如果你不使用NIB,你应该覆盖-loadView来创建至少一个基本的简单视图。