ios - 如何仅在复合 UIView 的一部分应用 3D 透视变换?

标签 ios core-animation calayer cgimage cabasicanimation

我有 UIView 和 UIImageViews、UILabels、UITextView。

我的目标是改变中间部分,使其看起来像折叠一张纸: - 顶部和底部保持不变,只是它们朝彼此滑动 - 中间部分向屏幕折叠 (如 Clear 应用程序中: http://blog.massivehealth.com/post/18563684407/clear?cbe4fc38 )

我的想法是首先加载整个 View ,然后分成 4 部分,将中间两部分制作成 CGImage 并以某种方式用透视动画它们,同时变换顶部和底部部分,这样它们就会向彼此滑动(最后,中间两部分)零件应该变得不可见)。

我还应该能够展开此 View 并滚动 UITextView。

我不是在寻找现成的答案,只是寻找正确解决方案的指针。 我遇到过 CALayer、CABasicAnimation 和 CGI​​mage,但还不知道如何解决这个问题。

最佳答案

我认为你的方法是正确的。由于您无法将转换应用于 View 的一部分,因此您必须将容器 View 拆分为单独的部分。您可以使用CALayer方法renderInContext:将 View 渲染为静态图像。然后,您可以将此图像拆分为所需的部分,将图像部分放置在原始 View 上(或用图像替换 View )并对图像进行动画处理。动画完成后,将 View 恢复为新形式。

关于ios - 如何仅在复合 UIView 的一部分应用 3D 透视变换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10863295/

相关文章:

objective-c - renderInContext 不捕获旋转的 subview

cocoa - NSView 内容的动画旋转

ios - Swift shapelayer 设置填充颜色不起作用

ios - 向下/向上滚动时 TableView 出现不一致的行为

ios - 更新到 ARC 错误

objective-c - 如何从远程服务器在 iOS 中加载不同的图像

iphone - 使用 CALayer 绘图的问题

ios - CoreData、NSPredicate 和 fetchRequest 令人费解的行为 - 或者只是我?

ios - 以编程方式创建的 UIView 的框架为 0

ios - 复制CALayer