通过renderInContext定位视图以进行绘制:

时间:2014-04-16 13:15:21

标签: ios core-graphics calayer cgcontext

我想在当前UIView中绘制CGGraphicsContext。我通过UIView绘制renderInContext:,但它位置不正确(始终位于左上角)。

我有UIView的所有值可用于绘制UIView

CGRect frame;
CGRect bound;
CGPoint center;
CGAffineTransform transform;

我目前设置了图层的位置和旋转:

CGContextTranslateCTM(context, frame.origin.x, frame.origin.y);
CGContextRotateCTM(context, (CGFloat) atan2(transform.b, transform.a));

但由于旋转,该位置不正确且与原始位置不同。
我该如何恢复原来的位置?坐标系之间没有变化,将center.xcenter.y值转换为适合CGContextTranslateCTM的值只是一个问题。

编辑:
保存的值是正确的,保存正确的boundscentertransform不是我的问题的根源,我的问题的根源是将这些值设置为drawable {{1通过CGLayer

1 个答案:

答案 0 :(得分:10)

使用此代码段可以将图形上下文的几何图形调整为UIView s几何图形:

// Center the context around the view's anchor point
CGContextTranslateCTM(context, [view center].x, [view center].y);
// Apply the view's transform about the anchor point
CGContextConcatCTM(context, [view transform]);
// Offset by the portion of the bounds left of and above the anchor point
CGContextTranslateCTM(context,
                      -[view bounds].size.width * [[view layer] anchorPoint].x,
                      -[view bounds].size.height * [[view layer] anchorPoint].y);