【问题标题】:I want to redraw a view我想重绘一个视图
【发布时间】:2023-03-27 18:19:01
【问题描述】:

我想重绘一个视图。 当我触摸一个按钮时,我的视图必须重新绘制自己。 (必须调用 viewWillAppear)

但视图的 setNeedDisplay 方法不会立即重绘自身。 因为要马上重绘,所以这个方法不适合我。

我试图删除 viewController 的所有视图的子视图并更改 viewController 的 查看其他视图。 但这些都不起作用。 (不要重画)

我急需你的帮助。

感谢您的阅读。

【问题讨论】:

标签: iphone view redraw


【解决方案1】:

我认为这里有一些误解。让我们把事情弄清楚:

  1. viewWillAppear:与视图的绘制无关。
  2. 确实setNeedsDisplay 不会立即重绘视图,但我们说的是毫秒。所以这甚至不相关。

由于您希望调用viewWillAppear:,因此我假设您所说的重绘视图实际上应该称为重新布局视图。我假设您在viewWillAppear: 中所做的是设置您的视图框架,并可能添加/删除和/或显示/隐藏一些视图。

我建议您将该代码移出 viewWillAppear: 并移到它自己的方法中,该方法将在您点击按钮时从 viewWillAppear: 调用。

由于您没有提供您的viewWillAppear: 代码,这一切都是基于假设,所以如果我的假设有误,请告诉我并提供您的“重绘”代码。

【讨论】:

  • 感谢您的详细建议。
【解决方案2】:

如果没有更多详细信息,很难确切知道您需要什么,但我可能建议您查看 UIView::setNeedsDisplay。这反过来会导致您的视图 drawRect: 在您可以更新绘图的地方被调用。

【讨论】:

  • 我误解了 setNeedDisplay 会调用 viewWillApear。现在,我知道 setNeedDisplay 会调用视图的 drawRect:。谢谢 Ripred。
【解决方案3】:
[yourViewName setNeedsDisplay];

【讨论】:

    猜你喜欢
    • 2014-04-14
    • 2019-09-14
    • 2021-09-02
    • 2019-09-30
    • 2014-03-08
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    相关资源
    最近更新 更多