gpt4 book ai didi

iPhone - 是否不可能获取 CALayers 组合的内容?

转载 作者:行者123 更新时间:2023-12-03 20:36:59 26 4
gpt4 key购买 nike

我在屏幕外 UIView(远大于 320x480)上有一个 3D 转换的 CALayer。

如何将 UIView 上看到的内容转储到 UIImage 中?

注意:我已编辑问题以包含此代码...

这就是我创建图层的方式...

CGRect area = CGRectMake (0,0,400,600];
vista3D = [[UIView alloc] initWithFrame:area ];

[self.view addSubview:vista3D];
[vista3D release];

transformed = [CALayer layer];
transformed.frame = area;
[vista3D.layer addSublayer:transformed];

CALayer *imageLayer = [CALayer layer];
imageLayer.doubleSided = YES;

imageLayer.frame = area;
imageLayer.transform = CATransform3DMakeRotation(40 * M_PI / 180.0f, 1.0f, 0.0f, 0.0f);

imageLayer.contents = (id)myRawImage.CGImage;

[transformed addSublayer:imageLayer];

// Add a perspective effect
CATransform3D initialTransform = transformed.sublayerTransform;
initialTransform.m34 = 1.0 / -500;
transformed.sublayerTransform = initialTransform;

// now the layer is in perspective
// my next step is to "flatten" the composition into a UIImage

UIImage *thisIsTheResult = some magic command

感谢您的帮助!

编辑1:我尝试过jessecurry解决方案,但它给了我一个没有任何视角的平坦层。

编辑2:我发现了一个可行的部分解决方案,但是这个解决方案给了我一个屏幕大小的图像,我正在寻找获得更高分辨率的版本,在屏幕外渲染。

最佳答案

在 iPhone SDK 的范围内,无法做到这一点。您可以使用 UIGetScreenImage 抓取屏幕内容或使用 -[CALayer renderInContext:] 将图层绘制到 CGContext 中,但强制GPU 仅将层的子集合成到缓冲区中的操作只能使用私有(private) API 和方法来实现。

关于iPhone - 是否不可能获取 CALayers 组合的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2289948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com