超级视图调整子视图的“正确”方式是什么?

时间:2012-06-23 22:49:29

标签: objective-c cocoa-touch

我刚刚开始为iOS项目做贡献,并注意到这种反复出现的模式:

// This takes place in the superview
// This is the first access of subviewController.view,
// so the subview controller will create its view
// Then we'll immediately resize it to our desired frame
subviewController.view.frame = CGMakeRect(x, y, width, height);

对于我来说,子视图的控制器创建具有特定帧大小的子视图只是为了让superview立即调整大小,这似乎很奇怪/效率低。

是否还有一些我缺少的设计模式允许superview从一开始就将所需的大小传递给子视图,所以不需要立即调整大小?

显然,子视图控制器可能只有一个特殊的方法,它将大小作为一个参数,但我想知道这是否是一个犹太/普通模式。

1 个答案:

答案 0 :(得分:1)

创建子视图时,您可以始终使用init创建initWithFrame方法,而不是使用{{1}}方法创建。顺便问一下,我们在谈论控制器的主要观点吗?然后,您可以在编译项目之前始终从界面构建器设置视图大小。

但是,如果应用程序需要在每次启动时动态更改子视图,那么当前的执行方式是唯一的选择。