我找到了一个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.