II有一个UIView,我将3个子视图放在其中,同一个UIView的所有实例,水平相邻,每个都用灰色背景填充。我让它为第一个视图工作,但我遇到第二个问题。这是应该做的技巧的drawRect代码..
- (void)drawRect:(CGRect)rect {
// grab current graphics context
CGContextRef g = UIGraphicsGetCurrentContext();
// fill grey background
CGContextSetRGBFillColor(g, (207.0/255.0), (207.0/255.0), 211.0/255.0, 1.0);
CGContextFillRect(g, self.frame);
}
所以从我的视图控制器我创建了第一个子视图,其中frame.origin.x = 0,并将其添加到我的主视图,然后创建第二个,其中frame.origin.x设置为第一个和添加它,然后是第三个。
第一个视图被正确填充,但第二个和第三个视图具有黑色背景,就像灰色填充没有发生一样。我怀疑这是因为我没有为第二和第三个子视图正确获取上下文。
我需要做些什么来完成这项工作?
约翰
答案 0 :(得分:3)
这是一个几何问题 - frame
vs bounds
。您不想填写self.frame
。您的drawRect
应为:
- (void)drawRect:(CGRect)rect {
// grab current graphics context
CGContextRef g = UIGraphicsGetCurrentContext();
// fill grey background
CGContextSetRGBFillColor(g, (207.0/255.0), (207.0/255.0), 211.0/255.0, 1.0);
CGContextFillRect(g, rect);
}