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

时间:2013-11-07 10:09:27

标签: ios iphone uiview storyboard drawrect

我有一个非常简单的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方法永远不会被调用,而第一个 {{1} (蓝色的)改变甚至不起作用。

如果我将我的顶视图(上图中的UIView)设置为backgroundColor,则背景确实会变为蓝色并调用CustomView;虽然背景不会变成黄色。

我真的不明白发生了什么,我想得到你的意见。

1 个答案:

答案 0 :(得分:0)

似乎没有显示自定义视图。它是否已正确添加为顶视图的子视图?你检查过它的超级视图是否是顶视图(UIView)?