正确使用UIGraphicsGetCurrentContext

时间:2012-03-14 02:10:30

标签: iphone xcode graphics

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设置为第一个和添加它,然后是第三个。

第一个视图被正确填充,但第二个和第三个视图具有黑色背景,就像灰色填充没有发生一样。我怀疑这是因为我没有为第二和第三个子视图正确获取上下文。

我需要做些什么来完成这项工作?

约翰

1 个答案:

答案 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);
}