当前位置: 首页 > 面试题库 >

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

白云
2023-03-14
问题内容

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

例如,我需要调用它吗:

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

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


问题答案:

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

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

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

例:

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

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



 类似资料:
  • 问题内容: 我见过的每一个tkinter教程都声称必须绘制窗口并处理事件,并且它们总是调用此函数,即使在hello world程序中也是如此。但是,当我在交互式外壳程序中尝试这些方法时,可以正确绘制窗口,而不必调用mainloop。 这个在tkinter中嵌入matplotlib图形的示例产生了一个相对复杂的应用程序,它具有用于在tkinter窗口内平移,缩放和调整图大小的按钮,而且,如果您删除对

  • 问题内容: 我实际上何时需要调用此方法Runtime.getRuntime()。addShutdownHook()以及何时或为何需要关闭应用程序。任何人都可以通过举例说明一下。 谢谢 问题答案: 据我所知,我将在下面进行解释。您可以搜索它并找到很多信息。 将注册一些在程序终止时要执行的动作。您启动的程序以两种方式结束: 主线程(根)结束其运行上下文; 该程序遇到一些意外情况,因此无法继续进行。 如

  • 问题内容: 如果仅在输出流中调用,则可以保证输出,还是需要始终调用? 问题答案: Close()始终刷新,因此无需调用。 编辑:这个答案是基于常识和我遇到的所有输出流。谁将为缓冲流实现close()而不先刷新缓冲区?在close()之前立即调用flush没有什么害处。但是,如果过度调用flush()会导致后果。它可能会在缓冲机制下失败。

  • 问题内容: 训练期间需要调用该方法。但是文档不是很有帮助 为什么我们需要调用此方法? 问题答案: 在中,我们需要在开始进行反向传播之前将梯度设置为零,因为PyTorch 会 在随后的向后传递中 累积梯度 。在训练RNN时这很方便。因此,默认操作是在每次调用时累积(即求和)梯度。 因此,理想情况下,当您开始训练循环时,应该正确进行参数更新。否则,梯度将指向预期方向以外的其他方向,即朝向 最小值 (或

  • 问题内容: 我有一个使用此函数运行线程的代码示例。我们为什么以及何时需要使用它? 编辑 怎么样来使用类,什么是和? 问题答案: 当您要从非UI线程更新UI时必须使用。例如-如果您想从后台线程更新UI。您也可以将其用于同一件事。 从文档- 在UI线程上运行指定的操作。如果当前线程是UI线程,则立即执行该操作。如果当前线程不是UI线程,则将操作发布到UI线程的事件队列。 句法 - 更新- 如果您要执行

  • 我需要一个明确的解释这一点,即使我读了这个关于差异的链接,但没有明确的清晰。那么有没有人可以简单地用代码向我解释一下呢?