CALayer renderInContext:绘图的位置

时间:2012-09-06 06:15:09

标签: core-animation calayer drawrect cgcontext

我有一个UIView,其中包含drawRect:中绘制的自定义形状。 frame属性设置为:

{5.f, 6.f, 50.f, 50.f}

现在,我在图像上下文中渲染视图,但它忽略了UIView的frame属性,并始终在左上角绘制UIView

[_shapeView.layer renderInContext:UIGraphicsGetCurrentContext()];

我尝试更改frame的{​​{1}},但没有任何改变。修改CALayer属性会让事情变得更糟。我发现有用的唯一工作是:

bounds

但是,当我处理许多形状时,这是不切实际的,我想只使用frame属性。

1 个答案:

答案 0 :(得分:30)

使用CGContextTranslateCTM是正确的方法。正如renderInContext: documentation所述:“在图层的坐标空间中渲染。”这意味着将忽略图层/视图的框架原点。

关于CGContextDrawLayer,它不会与CALayer一起使用,而是与CGLayer一起使用。这是两个截然不同的事情,并解释了你的崩溃。