根据我的理解, setNeedsDisplay 只影响它被调用的 View 。有没有一种简单的方法可以说“递归地更新此 View 及其所有 subview ?”

为了回应评论,这是我的情况:我有一个自定义 View

@interface ContainerView : UIView

此 View 未实现 drawRect 。在我的 xib 中有一个 container 的实例(称为 ContainerView ),其中添加了一些(自定义) subview 。当我在代码中说
[container setNeedsDisplay]

我希望这些 subview 能够更新。我哪里错了?

最佳答案

好的,UIView 在第一次显示时会绘制自己。 CALayer 没有。在 UIView 上调用 setNeedsDisplay 将其标记为脏,这也会自动重绘所有 subview (在所有 subview 上调用 drawrect)。在 CALayer 上调用 setNeedsDisplay 没有相同的效果,它不会重绘子图层。希望这可以帮助。

问候

引用
挑战极限的 iOS 7 编程 作者:Rob Napier、Mugunth Kumar

关于objective-c - setNeedsDisplay 和 subview ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8718290/

10-12 14:45
查看更多