2

我有 UIView 和 UIImageViews、UILabels、UITextView。

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

我的想法是首先加载整个视图,然后分成 4 个部分,将中间两部分制作成 CGImage 并以某种方式对它们进行透视动画,同时同时变换顶部和底部,因此它们相互滑动(最后,中间两部分应该变成无形的)。

我也应该能够展开这个视图并滚动 UITextView。

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

4

2 回答 2

2

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

于 2012-06-02T14:59:16.103 回答
1

几点建议:

  1. 将您的图像转换UIView为图像:请参阅此帖子;您可以拍摄 4 张视图的“快照”,或者:

    1.2 你拍一张,然后裁剪得到的图像(裁剪见这里);

  2. 创建一个新视图并添加 4 个 CALayers 作为子层self.layer;每一层都将其contents属性设置为相应的UIImage

  3. 根据需要为视图图层设置动画;查看Leaves 框架中的这个文件,看看如何做到这一点;基本上,此代码使用 CATransaction 和转换来为图层的属性设置动画(在这种情况下,它表示一个图层相对于另一个图层的位置),因此当该属性值更改时,相应地重绘图层。

希望能帮助到你。

于 2012-06-02T15:28:10.510 回答