对UIGraphicGetCurrentContext()感到困惑

时间:2012-06-04 02:47:20

标签: iphone cgcontext

我正在做一些自定义并面对

CGContextRef context = UIGraphicsGetCurrentContext();

我的问题:此上下文的默认大小是多少以及如何定义此上下文的大小。

编辑:

我在问,因为我正在link1link2 ...

关注教程

如果我们的背景单元格为link1的红色,而标题部分为红色,则请查看上下文,link2

然而,即使它们是UIView的子类,它们的宽度也不一样,我迷路了,找不到原因......

1 个答案:

答案 0 :(得分: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);

大小IS由你调用get上下文函数的地方定义,根据apple docs,在自定义drawRect方法中调用THAT函数:

  

默认情况下,当前图形上下文为零。在致电之前   drawRect:方法,视图对象将有效的上下文推送到堆栈上,   使它成为现实。如果你没有使用UIView对象来做你的   但是,必须将有效的上下文推送到堆栈中   手动使用UIGraphicsPushContext函数。

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

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

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

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