iphone – UIView可以知道它何时在屏幕上

我有一个包含很多组件的UIView,如果删除了视图或者弹出/推送了它的父视图控制器,我想更新其中的一些组件. UIView是否可以获取此信息

与UIViewController中的方法类似

-(void)viewWillAppear;

想要像

-(void)UIViewWillAppear;

编辑我看到的一些评论:

我会解释一下

但我有一个特殊的情况,UIView需要在其自身的顶部添加一个“浮动视图”(想象一下缩放/平移/滚动UISCrollView子类,其上面有浮动),这样当它滚动时浮动视图保持在相对位置到超级视图.我尝试重新计算 – (void)layoutSubviews方法中“浮动”的新原点,但重新放置非常不稳定.为了解决这个波动性问题,自定义UIView添加了浮动视图(理论上是它的子视图)作为其超级视图的子视图(有点绕口令:)).
现在,当删除自定义UIView(或者其包含视图控制器被推离屏幕外)时出现问题.特殊的UISCrollView如何从superView中删除浮动视图.

最佳答案 您可以覆盖willMoveToSuperview:以查明何时将视图插入层次结构以及何时将其删除.这可能不是你想要的,因为视图可以是层次结构的一部分而不是自己插入.

要查明它是否在屏幕上使用willMoveToWindow:.如果参数为非零,则视图才会成为可见视图层次结构的一部分.

如果您在更改后需要执行某些操作,请使用didMoveToWindow:

点赞