0

我正在做一些定制并面对

CGContextRef context = UIGraphicsGetCurrentContext();

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

编辑 :

我问是因为我在链接 1和链接 2 上关注教程......

请看一个上下文,当我们有红色的背景单元格和红色link1的标题部分时link2

但是,即使它们是子类,它们的宽度也不相同UIView,我迷失了寻找原因......

4

1 回答 1

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 context 函数的任何位置定义,该函数在自定义 drawRect 方法中被调用:

当前图形上下文默认为 nil。在调用它的 drawRect: 方法之前,视图对象将一个有效的上下文压入堆栈,使其成为当前的。但是,如果您不使用 UIView 对象进行绘图,则必须使用 UIGraphicsPushContext 函数手动将有效上下文推送到堆栈上。

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

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

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

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

于 2012-06-04T04:53:06.083 回答