ios - UIView(不是 UIViewController)是否有任何 viewDidAppear 方法?

标签 ios uiview uiviewcontroller viewdidload viewdidappear

我需要了解 UIView 何时出现在屏幕上,因此我需要 viewDidAppear 方法的模拟。

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

  1. willMoveToSuperview
  2. 使内在内容大小无效
  3. didMoveToSuperview
  4. 从 Nib 醒来
  5. 将移动到窗口
  6. 需要更新约束
  7. didMoveToWindow
  8. 设置需求布局
  9. 更新约束
  10. 布局 subview
  11. 绘制矩形

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

最佳答案

不,UIView 中没有viewDidAppear。您可以覆盖 func drawRect 以在 UIView 继承的 View 上执行您需要的任何 UI 更改。

旁注 - 如果您想让 drawrect 稍后更新,请调用 setNeedsDisplaysetNeedsDisplay不会立即调用 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/

相关文章:

ios - 是否可以使用从单个模态视图 Controller 返回到同一源 View Controller 的多个实例之一的展开转场?

ios - 快速获取字典中数组的值

javascript - RCTSharedApplication() 委托(delegate)错误 react native

ios - 在没有自动布局的情况下增加 UIView 的高度

ios - 如何自动调整 UIScrollView 的大小

ios - 从一个 UIButton 创建多个 segues 到同一个 View Controller 或另一个

ios - 使用用户默认值来记住隐藏或未隐藏的内容

ios - SpriteKit 中的攻击按钮

iphone - view.bounds.origin 是什么意思?

ios - 推送 View Controller ,黑屏