当前位置 : 主页 > 手机开发 > ios >

ios – 是否有任何用于UIView的viewDidAppear方法(不是UIViewController)?

来源:互联网 收集:自由互联 发布时间:2021-06-11
我需要了解UIView何时出现在屏幕上,所以我需要一个viewDidAppear方法的类比. 我找到了一个UIView生命周期: willMoveToSuperview invalidateIntrinsicContentSize didMoveToSuperview awakeFromNib willMoveToWindow nee
我需要了解UIView何时出现在屏幕上,所以我需要一个viewDidAppear方法的类比.

我找到了一个UIView生命周期:

> willMoveToSuperview
> invalidateIntrinsicContentSize
> didMoveToSuperview
> awakeFromNib
> willMoveToWindow
> needsUpdateConstraints
> didMoveToWindow
> setNeedsLayout
> updateConstraints
> layoutSubviews
> drawRect

我尝试了所有这些方法,但我没有得到答案.

在UIView中没有viewDidAppear.您可以覆盖func drawRect来执行UIView继承的View所需的任何UI更改.

SideNote – 如果您希望稍后更新drawrect,请调用setNeedsDisplay. setNeedsDisplay不会立即调用drawRect,而是将接收者的整个边界矩形标记为需要重绘.

换句话说 – 你永远不应该自己调用drawRect.相反,您告诉系统需要使用setNeedsDisplay方法完成绘制,该方法将视图标记为脏.然后在下一个更新周期中调用子类的drawRect方法.

根据OP(@Alexander)的查询,他只需要设置一些变量,因此建议使用以下任何覆盖函数,具体取决于需要执行的操作

> – (void)didMoveToSuperview – 在视图后立即发送插入到视图层次结构中.> – (void)didMoveToWindow – 在视图获取后立即发送窗口属性集.> – (void)willMoveToSuperview:(UIView *)newSuperview – 发送在视图被添加为另一个视图的子视图之前;从中移除视图时,newSuperview可能为nil上海华.> – (void)willMoveToWindow:(UIWindow *)newWindow – 立即发送在视图(或其超级视图)添加到窗口之前;新窗户从窗口中删除视图时可能为nil.

网友评论