我有一个UIView
,其中包含drawRect:
中绘制的自定义形状。 frame
属性设置为:
{5.f, 6.f, 50.f, 50.f}
现在,我在图像上下文中渲染视图,但它忽略了UIView
的frame属性,并始终在左上角绘制UIView
。
[_shapeView.layer renderInContext:UIGraphicsGetCurrentContext()];
我尝试更改frame
的{{1}},但没有任何改变。修改CALayer
属性会让事情变得更糟。我发现有用的唯一工作是:
bounds
但是,当我处理许多形状时,这是不切实际的,我想只使用frame属性。
答案 0 :(得分:30)
使用CGContextTranslateCTM
是正确的方法。正如renderInContext:
documentation所述:“在图层的坐标空间中渲染。”这意味着将忽略图层/视图的框架原点。
关于CGContextDrawLayer
,它不会与CALayer
一起使用,而是与CGLayer
一起使用。这是两个截然不同的事情,并解释了你的崩溃。