【问题标题】:iOS: Detect when my UIView is add in other viewiOS:检测我的 UIView 何时添加到其他视图中
【发布时间】:2012-07-19 09:55:27
【问题描述】:
CustomView *customView = [...];
[self.view addSubview:customView];

我需要在我的 CustomView 类中检测它何时添加到其他视图中或我的超级视图更改时。

【问题讨论】:

  • did/willMoveToSuperview: 还不够吗?
  • 在其他视图中添加customView时不会。

标签: ios uiview superview


【解决方案1】:

您可以使用willMoveToSuperview:didMoveToSuperview 来检测视图何时移动。 layoutSubviews会在superview换帧时调用。

【讨论】:

  • 非常感谢,我没有想到 layoutSubviews。
  • 问题:在我的视图控制器中,viewWillAppear:animated 被称为 之前 viewWillLayoutSubviews。因此,即使我使用viewWillLayoutSubviews 根据超级视图的大小排列我的视图,我也无法在它们所属的viewWillAppear:animated 中启动一些动画之后。这应该怎么做?
  • 第二种方法名称是didMoveToSuperview(没有:),以防万一有人复制/粘贴。
【解决方案2】:
  • 对于 UIView 使用 - (void)didMoveToSuperview
  • 对于 UIViewController 使用 -(void)viewWillAppear:(BOOL)animated

【讨论】:

    【解决方案3】:

    还在 addsubview 之前分配 Customview 的 TAG 并通过特定 TAG 检测。

    【讨论】:

    • 如果您想使用viewWithTag: 方法从超级视图的角度跟踪视图,这不是一个坏策略,但这不是这里的问题。
    猜你喜欢
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多