如何将UIView呈现为CGContext

时间:2011-02-18 12:41:32

标签: iphone ipad ios uiview cgcontext

我想将UIView渲染成CGContextRef

-(void)methodName:(CGContextRef)ctx {
    UIView *someView = [[UIView alloc] init];

    MagicalFunction(ctx, someView);
}

因此,这里的MagicalFunction应该将UIView(可能是它的图层)渲染到当前上下文中。

我该怎么做?

提前致谢!

1 个答案:

答案 0 :(得分:16)

CALayer的renderInContext方法怎么样?

-(void)methodName:(CGContextRef)ctx {
    UIView *someView = [[UIView alloc] init];
    [someView.layer renderInContext:ctx];
}

编辑:如评论中所述,由于过程中涉及的两个坐标系统的起源不同,图层将呈现倒置。要进行补偿,您只需垂直翻转上下文。这在技术上通过缩放和平移变换完成,可以在单个矩阵变换中组合:

-(void)methodName:(CGContextRef)ctx {
    UIView *someView = [[UIView alloc] init];
    CGAffineTransform verticalFlip = CGAffineTransformMake(1, 0, 0, -1, 0, someView.frame.size.height);
    CGContextConcatCTM(ctx, verticalFlip);
    [someView.layer renderInContext:ctx];
}