【发布时间】:2023-03-27 18:19:01
【问题描述】:
我想重绘一个视图。 当我触摸一个按钮时,我的视图必须重新绘制自己。 (必须调用 viewWillAppear)
但视图的 setNeedDisplay 方法不会立即重绘自身。 因为要马上重绘,所以这个方法不适合我。
我试图删除 viewController 的所有视图的子视图并更改 viewController 的 查看其他视图。 但这些都不起作用。 (不要重画)
我急需你的帮助。
感谢您的阅读。
【问题讨论】:
我想重绘一个视图。 当我触摸一个按钮时,我的视图必须重新绘制自己。 (必须调用 viewWillAppear)
但视图的 setNeedDisplay 方法不会立即重绘自身。 因为要马上重绘,所以这个方法不适合我。
我试图删除 viewController 的所有视图的子视图并更改 viewController 的 查看其他视图。 但这些都不起作用。 (不要重画)
我急需你的帮助。
感谢您的阅读。
【问题讨论】:
我认为这里有一些误解。让我们把事情弄清楚:
viewWillAppear:与视图的绘制无关。setNeedsDisplay 不会立即重绘视图,但我们说的是毫秒。所以这甚至不相关。由于您希望调用viewWillAppear:,因此我假设您所说的重绘视图实际上应该称为重新布局视图。我假设您在viewWillAppear: 中所做的是设置您的视图框架,并可能添加/删除和/或显示/隐藏一些视图。
我建议您将该代码移出 viewWillAppear: 并移到它自己的方法中,该方法将在您点击按钮时从 viewWillAppear: 调用。
由于您没有提供您的viewWillAppear: 代码,这一切都是基于假设,所以如果我的假设有误,请告诉我并提供您的“重绘”代码。
【讨论】:
如果没有更多详细信息,很难确切知道您需要什么,但我可能建议您查看 UIView::setNeedsDisplay。这反过来会导致您的视图 drawRect: 在您可以更新绘图的地方被调用。
【讨论】:
[yourViewName setNeedsDisplay];
【讨论】: