Ios 更改子视图的背景色不起作用

Ios 更改子视图的背景色不起作用,ios,iphone,uiview,storyboard,drawrect,Ios,Iphone,Uiview,Storyboard,Drawrect,我有一个非常简单的UIViewController,其主视图具有以下结构: UIView -->CustomView 我的看法是这样的 -(id) initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { [self setBackgroundColor:[UIColor blueColor]]; NSLog([NSStrin

我有一个非常简单的UIViewController,其主视图具有以下结构:

UIView
-->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
方法,而且first
backgroundColor
(蓝色的)更改甚至不起作用

如果我将俯视图(上图中的UIView)设置为
CustomView
,则背景会变为蓝色,并调用
drawRect
;但背景不会变为黄色


我真的不明白发生了什么,我想听听您的意见,谢谢。

似乎没有显示自定义视图。是否已将其作为子视图正确添加到俯视图?您是否已检查其superview是否为俯视图(UIView)

是的,它的superview是UIView,显示它是因为我有一个标签,我可以看到它,谢谢thoughrevealapp.com对于调试这样的视图层次结构问题非常有用。谢谢,这个应用真的很酷!我使用了,它说我的自定义视图有一个大小为(0,0)的框架,即使在我的init日志中它有正确的框架CGRect{{71152},{17961}。这真的很奇怪,因为我的视图中有一个标签显示,但在“显示”中,它显示标签在我的视图之外,在它下面…实际上,在我的ViewController的viewDidLoad和ViewWillDisplay之间,我的视图的高度设置为0