我想在当前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.x
和center.y
值转换为适合CGContextTranslateCTM
的值只是一个问题。
编辑:
保存的值是正确的,保存正确的bounds
,center
和transform
不是我的问题的根源,我的问题的根源是将这些值设置为drawable {{1通过CGLayer
。
答案 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);