【问题标题】:What size to use in UIViewController's loadView?在 UIViewController 的 loadView 中使用什么尺寸?
【发布时间】:2012-10-03 20:31:30
【问题描述】:

我的容器UIViewController 将在其视图层次结构中添加另一个CustomViewController 的视图。它首先创建控制器,然后调整其视图的大小,最后将其添加到其视图中。

    //create the controller
    customController = [[CustomViewController alloc] initWithNibName:nil bundle:nil];
    [customController willMoveToParentViewController:self];
    [self addChildViewController:customController];
    [customController didMoveToParentViewController:self];

    //size and position the controller's view 
    customController.view.frame = CGRectMake(10, 10, 100, 50);

    //add the new controller's view
    [self.view addSubview:customController.view];
    [customController didMoveToParentViewController:self];

调整大小的部分是我的问题。

CustomViewController 以编程方式在loadView 中创建其视图,其中添加了许多子视图。由于 CustomViewController 并不真正知道它的视图最终将如何调整大小/定位,因此它仅使用 init 进行初始化(未提供框架)。

这对于简单的 UIView 来说效果很好,但是一旦我添加了子视图,我就会遇到问题。将这些子视图放在“loadView”中不会真正起作用,因为框架是 CGRectZero。此外,一旦我设置了自动调整大小的蒙版以确保它正确缩放,最终结果是所有子视图都增长到占据整个视图。可能是因为子视图的坐标都是100%的视图框架(因为视图的框架是CGRectZero)。

简而言之,我应该在loadView 中使用什么尺寸的框架?我是否应该假设我期望视图占据的典型视图大小?还是有更好的方法允许我添加子视图但推迟控制器视图的大小?

【问题讨论】:

    标签: iphone objective-c ios cocoa-touch ios6


    【解决方案1】:

    UIViewController 的视图在 viewWillAppear 方法(UIViewController 的生命周期方法)中具有实际大小。所以你可以继承 UIViewController 类并在那里布局你的子视图。

    但是,我想给你一些建议。 您应该使用视图控制器的 loadView 方法来创建它的视图。 否则你可能会遇到内存管理问题和视图布局问题。 在 init 方法中调用视图属性不是很好,因为它会自动调用 UIViewController 的 loadView 方法..

    阅读有关 UIViewController 生命周期的更多信息。 http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

    我的建议: 使用父 UIViewController 的 loadView 来创建它的视图。 viewWillAppear 中的布局视图。

    祝你好运!如果您有任何问题,请询问更多:)

    【讨论】:

      【解决方案2】:

      您可以为子视图设置与其父视图相关的框架。喜欢

      subview.frame = CGPointMake(self.view.frame.size.width *0.2,  self.view.frame.size.height *0.2, self.view.frame.size.width *0.8, self.view.frame.size.height *0.8);
      

      【讨论】:

        猜你喜欢
        • 2019-04-13
        • 1970-01-01
        • 2021-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-24
        • 1970-01-01
        相关资源
        最近更新 更多