2012-06-04 44 views
0

我做一些定制,并与困惑UIGraphicGetCurrentContext()

CGContextRef context = UIGraphicsGetCurrentContext(); 

我面临的问题:什么是这一背景下,如何此背景下的大小定义的默认大小。

编辑:

我问,因为我在link1link2下面的教程...

请大家看一个背景下,当我们在红色的背景细胞从link1和头红色部分以及link2

然而,这些宽度是不一样的,即使他们的UIView子类,我迷路找出原因...

回答

0

我不明白什么是你的问题,尤其是当Raywenderlich的教程非常清楚地说明了这一点。

CGContextRef context = UIGraphicsGetCurrentContext(); 

会给你当前的“画布”,然后你只是改变那个画布的状态。

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGColorRef redColor = 
    [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0].CGColor; 

CGContextSetFillColorWithColor(context, redColor); 
CGContextFillRect(context, self.bounds); 

大小由无论你调用get上下文功能定义,函数被调用自定义的drawRect方法内,根据苹果文档:

当前的图形上下文是默认为零。在调用其 drawRect:方法之前,视图对象会将有效上下文推送到堆栈上,使其变为最新。但是,如果您未使用UIView对象执行绘图,则必须使用UIGraphicsPushContext函数手动将有效上下文手动推入堆栈 。

因此,当传递self.bounds时,会使用调用此函数的元素的大小。

这段代码甚至可以针对不同大小的不同单元格调用,因为每个单元格都会调用drawRect方法并获得相应的大小。

也许你的困惑在于,它们是UIView的子类,并不意味着它们在故事板的视图中具有“UIView”属性。这意味着它们是与uiview具有相同结构的元素(这就是为什么他们可以调用drawRect),但是您将扩展或自定义您的期望行为。

PD:刚才注意到我今天早些时候回答了你的另一个问题哈哈。