iOS:检测我的 UIView 何时添加到其他视图中

Posted

技术标签:

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

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

【问题讨论】:

did/willMoveToSuperview: 还不够吗? 在其他视图中添加customView时不会。 【参考方案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: 方法从超级视图的角度跟踪视图,这不是一个坏策略,但这不是这里的问题。

以上是关于iOS:检测我的 UIView 何时添加到其他视图中的主要内容,如果未能解决你的问题,请参考以下文章

IOS、UIView、检测子视图隐藏状态变化

如何检测表视图中的项目何时更改?

检测 UIView/UILabel 何时重绘自身?

iOS 接触开始

何时在自定义 UIVIew 中添加 CAAnimation?

如何检测手指移入或移出我的自定义 UIView