一尘不染

我何时需要在iOS中调用setNeedsDisplay?

swift

在创建iOS应用时,我确切地知道何时需要致电setNeedsDisplay?我知道这与更新/重绘UI有关。但是,每次更改任何视图时,都需要调用此名称吗?

例如,我需要调用它吗:

  • 以编程方式更改文本字段中的文本之后
  • 更改视图背景时?
  • 当我在viewDidLoad中进行更改时?
  • 在viewDidAppear中怎么样?

有人可以给我一些有关何时使用此方法的一般指导吗?


阅读 396

收藏
2020-07-07

共1个答案

一尘不染

如果您在UIView的子类中重写drawRect,则应该仅调用setNeedsDisplay,该子类基本上是一种自定义视图,用于在屏幕上绘制某些东西,例如线条,图像或矩形等形状。

因此,当您更改此绘图所依赖的几个变量并且为了表示该更改的视图时,应调用setNeedsDisplay,您需要调用此方法,该方法在内部将调用drawRect并重新绘制组件。

当您将imageView或UIButton添加为子视图或对任何子视图进行更改时,无需调用此方法。

例:

您有一个显示移动圆的视图,可以触摸并移动它,也可以是基于计时器的动画。现在,您将需要一个自定义视图,该视图在给定的中心和给定的半径处绘制一个圆。这些变量保留为实例变量,可以通过更改圆心来修改圆,或者通过增加圆弧半径使其变大来修改圆。

现在,在这种情况下,您可以在循环和计时器中修改这些变量(中心或半径),或者可以用您的手指触摸touchesEnded和touchesMoved方法。为了反映此属性的更改,您需要重绘此视图,将为此调用setNeedsDisplay。

2020-07-07