何时调用layoutSubviews方法?

时间:2012-04-02 20:37:24

标签: iphone ios

我正在通过a tutorial提到以下方法:

-(void)layoutSubviews

位于CustomerCell.m

在应用程序执行期间何时调用此方法?是自动调用吗?我没有看到任何回调。

3 个答案:

答案 0 :(得分:12)

您会找到答案here

编辑:直接从博客中复制:

  • init不会导致调用layoutSubviews(duh)
  • addSubview导致在要添加的视图,要添加到的视图(目标视图)以及目标视图的所有子视图上调用layoutSubviews
  • 只有当框架的尺寸参数不同时,
  • setFrame才会智能地调用仅具有框架设置的视图上的layoutSubviews
  • 滚动UIScrollView会导致在scrollView上调用layoutSubviews,并且它是superview
  • 旋转设备只在父视图上调用layoutSubview(响应的viewControllers主视图)
  • removeFromSuperview - 仅在superview上调用layoutSubviews

答案 1 :(得分:1)

你是对的。布局子视图会自动调用。查看文档以获取更多信息。

文档没有明确说明何时调用它。但是,您几乎可以保证它经常被调用。当您无法使用struts和spring调整子视图大小或移动自己时,您真的只想覆盖此方法。一个实例是在设备更改方向时重新组织子视图位置。

答案 2 :(得分:1)

只要系统认为您的视图需要再次布局,就会调用layoutSubviews方法。例如,如果更改了视图的框架,或添加了子视图等,如果需要手动触发,则可以调用setNeedsLayout方法。