gpt4 book ai didi

iphone - 为什么我的 UIView 子类在调用 setNeedsDisplay 后没有重绘?

转载 作者:行者123 更新时间:2023-12-03 20:09:31 25 4
gpt4 key购买 nike

我有一个自定义 UIView,它是 UITableViewCell 的 subview 。当单元格被绘制时,我的自定义 View 也是如此,在我的 UIView 子类中正确调用drawRect:。重新加载单元格时,将正确绘制 View (调用drawRect:)。

当某个事件发生时(例如计时器),我想重绘 View 而不必重新加载整个单元格。 (这不是单元格中的唯一 View 。)

但是,当我在 subview 上调用 setNeedsDisplay 时,什么也没有发生。

我猜测,当调用我的 View 的 drawRect: 时,生成的图像会缓存在某处的背景中,这样当我调用 setNeedsDisplay 时,该背景就会重新绘制为屏幕上,但我的 drawRect: 调用再也不会被调用。

为什么在创建单元格后不再调用drawRect:

编辑:单元格的 subview 是从 Nib 创建的。即:从 Nib 加载 UIViewController,并将其 View 添加到 UITableViewCell。

我使用自定义 View 从头开始制作了一个测试用例,该 View 不是从 Nib 加载(由代码创建),并且它按预期工作:setNeedsDisplay 结果为drawRect: 调用。它必须是在 .xib 文件中设置的内容,或者是从 nib 加载 View 时发生的不同情况。

最佳答案

我自己也遇到了同样的问题。对我来说,这是我的 XIB 的问题 - 尽管我正在对 UIView 进行子类化 - 因此请相应地进行调整。我在 IB 中的错误是我将控件附加到“文件所有者”,而不是将它们附加到 UIView。我确信,在我的经验不足的情况下,有更大的事情正在发生 - 也许有更多经验的人可以详细说明。

希望有帮助!

关于iphone - 为什么我的 UIView 子类在调用 setNeedsDisplay 后没有重绘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4638660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com