gpt4 book ai didi

iphone - "Bending"3D 中的 UIView

转载 作者:行者123 更新时间:2023-12-03 19:19:30 25 4
gpt4 key购买 nike

创建为 View 提供曲率感的 CA 动画的最佳方式是什么?

我最初的方法是创建一个 CALayers 网格,每个 CALayers 都有一个独特的变换矩阵(我有一些使用 OpenGL 的经验,这就是我在 GL 中的做法)。为此,我需要将 View 分成几个四边形(每个四边形由 CALayer 表示)。问题是,我该如何做到这一点。在动画开始时拍摄 View 快照并使用直到动画完成(就像过渡可以做的那样)就可以了,但我不知道如何拍摄这样的快照。

任何指针(尤其是代码示例的链接)都具有黄金值(value):)

最佳答案

经典答案:

我想您可能正在寻找的是 CALayer 的 renderInContext: 。每个 UIView 都有一个 CALayer,您可以通过 layer 获取它。属性(property)。因此,您可以构建您想要的 CGContext(大概是位图上下文),让 View 的层将 View 绘制到上下文,然后对这些数据执行您想要的任何操作,无论是将其分成一堆 UIImages 还是因此,对于 CoreAnimation 效果的 UIImageViews,请将其上传到 OpenGL 或其他。

示例代码由Apple直接在 Q&A 1703 中提供,它使用 UIKit CoreGraphics 扩展直接跳转到 UIImage 并挖掘所有可用窗口以捕获整个屏幕的图像。但它向你展示了事物的本质。

<小时/>

2015 年更新:

从 iOS 7 开始,如 Q&A 1817 中所述, UIView 提供了 -drawViewHierarchyInRect:afterScreenUpdates: ,它进一步减少了快照 View 所需的代码 — 在 Apple 的示例代码中减少到四行。 Q&A 1703 似乎已被撤回,因为 Apple 方面不再提供该问题;上面的链接是外部存档副本。因此,1817 年的建议值得遵循。

关于iphone - "Bending"3D 中的 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5355558/

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