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

37
CustomView *customView = [...];
[self.view addSubview:customView];

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


did/willMoveToSuperview: 还不够吗? - Paul de Lange
当customView被添加到其他视图中时,不要执行此操作。 - Jeremy Grenier
3个回答

82
您可以使用willMoveToSuperview:didMoveToSuperview来检测视图何时被移动。当超级视图改变帧时,layoutSubviews将被调用。

非常感谢,我没有考虑过layoutSubviews。 - Jeremy Grenier
问题:在我的视图控制器中,viewWillAppear:animatedviewWillLayoutSubviews 之前被调用。因此,即使我使用 viewWillLayoutSubviews 根据父视图的大小来排列我的视图,我也不能在 viewWillAppear:animated 中开始一些动画,这些动画应该在那里。应该如何解决? - Timo
2
第二个方法名是 didMoveToSuperview(没有 :),以防有人复制粘贴。 - M-P

7
  • UIView使用- (void)didMoveToSuperview方法
  • UIViewController使用-(void)viewWillAppear:(BOOL)animated方法

-5
在添加子视图之前,还要为Customview分配标签,并通过特定的标签进行检测。

如果你想用viewWithTag:方法来跟踪superview的视角,那么这不是一个坏策略,但这不是这里的问题。 - turingtested

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接