我需要了解 UIView 何时出现在屏幕上,因此我需要 viewDidAppear 方法的模拟。
我找到了一个 UIView 生命周期:
- willMoveToSuperview
- 使内在内容大小无效
- didMoveToSuperview
- 从 Nib 醒来
- 将移动到窗口
- 需要更新约束
- didMoveToWindow
- 设置需求布局
- 更新约束
- 布局 subview
- 绘制矩形
我尝试了所有这些方法,但我没有得到答案。
最佳答案
不,UIView
中没有viewDidAppear
。您可以覆盖 func drawRect
以在 UIView
继承的 View 上执行您需要的任何 UI 更改。
旁注 - 如果您想让 drawrect
稍后更新,请调用 setNeedsDisplay
。 setNeedsDisplay
不会立即调用 drawRect
,而是将接收器的整个边界矩形标记为需要重绘。
换句话说 - 你永远不应该自己调用 drawRect。相反,您告诉系统需要使用 setNeedsDisplay 方法完成绘制,该方法将 View 标记为脏。然后在下一个更新周期调用子类的 drawRect 方法。
根据 OP(@Alexander) 的查询,他只需要设置一些变量,因此建议使用以下任何覆盖函数,具体取决于需要执行的操作
-(void)didMoveToSuperview
- 在 View 完成后立即发送 插入到 View 层次结构中。-(void)didMoveToWindow
- 在 View 获取其后立即发送 窗口属性集。-(void)willMoveToSuperview:(UIView *)newSuperview
- 已发送 在 View 作为 subview 添加到另一个 View 之前;newSuperview
当你从它的 View 中移除 View 时可能为 nil super View 。-(void)willMoveToWindow:(UIWindow *)newWindow
- 立即发送 在将 View (或其父 View )添加到窗口之前;新窗口
当您从窗口中删除 View 时可能为零。
关于ios - UIView(不是 UIViewController)是否有任何 viewDidAppear 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53809735/