iphone - 如何将 UIView 渲染到 CGContext

标签 iphone ipad ios uiview cgcontext

我想将 UIView 渲染到 CGContextRef 中

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

    MagicalFunction(ctx, someView);
}

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

我该怎么做?

提前致谢!

最佳答案

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];
}

关于iphone - 如何将 UIView 渲染到 CGContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5041403/

相关文章:

iphone - 如何缩短 Cocos2D 粒子生命周期?

ios - UINavigationBar-设置背景图像?

iphone - 在iPad上镜像应用程序屏幕需要什么?

iphone - 有没有节点类,比如NSNode?

ios - 如何防止用户禁用或删除我的 IOS safari 内容拦截器?

iphone - 协议(protocol)和委托(delegate)不能正常工作

ios - 在 iOS 8 中更改 inputAccessoryView 的框架

iphone - Cocos2d 中的视网膜和非视网膜图形

iphone - 通过 CLGeocoder 的方法查找一个区域中的所有位置

iphone - 在 iOS 中从纬度和经度获取位置名称