我有一个非常简单的 UIViewController,其主视图具有以下结构:
UIView
-->CustomView
我的 CustomView 看起来像这样
-(id) initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self setBackgroundColor:[UIColor blueColor]];
NSLog([NSString stringWithFormat:@"Init with frame %f,%f,%f,%f", self.frame.origin.x, self.frame.origin.y, self.frame.size.width, self.frame.size.height]);
}
return self;
}
- (void)drawRect:(CGRect)rect {
NSLog([NSString stringWithFormat:@"Drawing CGRect %f,%f,%f,%f", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height]);
[self setBackgroundColor:[UIColor yellowColor]];
}
在日志中,我可以看到init
使用正确的框架调用了,但我的drawRect
方法从未被调用,并且第一个 backgroundColor
(蓝色的)更改甚至不起作用。
如果我将顶视图(上图中的 UIView)设置为CustomView
,则背景会变为蓝色drawRect
并被调用;但是背景不会变成黄色。
我真的不明白发生了什么,我想得到你的意见,谢谢。