我在我的视图之一中重写了drawRect:,即使不调用[superdrawrect:rect]它也能工作。这是如何运作的?
- (void)drawRect:(CGRect)rect{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetBlendMode(context, kCGBlendModeDestinationOver);
[[UIColor clearColor] setFill];
UIRectFill(CGRectMake(0,0,100,100));
}
从文档中:
“此方法的默认实现不执行任何操作。子类
使用 Core Graphics 和 UIKit 等技术来绘制它们的
视图的内容应该重写此方法并实现其绘制
那里有代码”
也来自文档..
“如果您直接子类化 UIView,则此方法的实现
不需要调用super。但是,如果您要子类化
不同的视图类,你应该在你的某个时刻调用 super
执行。”
文档链接 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/occ/instm/UIView/drawRect:
我假设,你的超类是 UIView。因此,即使不调用 [super drawrect:rect] ,它也能工作。因为drawRect:因为UIView什么也没做。因此,在这种情况下,无论您是否调用 [super drawrect:rect] 都没有区别。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)