【问题标题】:CALayer renderInContextCALayer 渲染上下文
【发布时间】:2009-11-16 09:07:34
【问题描述】:

我用

CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / -500;

成功了,但是我用“renderInContext:context”从上下文中获取CGImage,发现图像效果没有改变!

如何从 CALayer 获得这个效果图?

【问题讨论】:

    标签: core-animation calayer


    【解决方案1】:

    我的原始回复如下。它在我发布时有效,但 Apple 不再允许使用 UIGetScreenImage。据我所知,在 iOS4 发布后,没有其他选择如何使用 3D 转换渲染图层 + 如果您使用 UIGetScreenImage,您的应用将被拒绝



    来自关于 renderInContext 的 iPhone 开发者文档:

    此外,使用 3D 的图层 不渲染变换,也不渲染 指定背景过滤器的图层, 过滤器、合成过滤器或蒙版 价值观。

    因此,renderInContext 不是您需要用来渲染应用了 3D 变换的图层的函数。

    你能做的最好的就是调用:UIGetScreenImage,它基本上会给你一个屏幕截图,然后你可以从这个屏幕截图中提取图像。

    【讨论】:

    • UIGetScreenImage 不再被允许。我刚刚收到一封来自 Apple 的电子邮件,要求停止使用此私有函数并使用 -renderInContext:(在 iOs 3.x 上)或 AV Foundation AVCaptureSession 和相关类(在 iOS 4 上)。
    • 我今天收到了来自 Apple 的同一封电子邮件,我的情况与您的情况相似。显然,我们将不得不告别所有使用 iOS3 的用户,或者告别捕获……有什么想法吗?
    • 今天很有趣,我的一个应用程序也因使用 UIGetScreenImage() 而被拒绝...我在 iOS4 上进行了测试,但 renderInContext 仍然不渲染 3D 转换,所以..我真的不知道是什么现在最好的事情
    猜你喜欢
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 2019-01-14
    • 2019-01-05
    相关资源
    最近更新 更多