在做一个小项目时,我发现自己需要drawRect:
在我的一个UIView
子类中进行一些自定义绘图。我注意到当我覆盖子类drawRect:
的默认背景颜色UIView
已从透明更改为黑色时(默认背景颜色是指视图在其backgroundColor
属性为 nil 时自行绘制的颜色。)即使是空的drawRect:
或drawRect:
简单的调用[super drawRect:]
我也注意到这种行为。
这不是一个真正的问题,因为简单地将 a 设置backgroundColor
为非零值就可以,无论是否drawRect:
被覆盖。然而,它确实让我开始思考如何UIView
知道是否drawRect:
被子类覆盖。我知道 Objective-C 提供了确定一个类甚至它的超类是否响应某个选择器的工具。但是超类怎么可能知道它的子类是否覆盖了它的一个方法呢?而且,如果这种内省确实是不可能的,那么在我的例子中会发生什么?