我使用UIImageViews,UILabels,UITextView进行UIView。
我的目标是改造中间部分,使它看起来像折叠一张纸: - 顶部和底部部分保持不变,只是它们相互滑动 - 中间部分向屏幕折叠 (如在清除应用中:http://blog.massivehealth.com/post/18563684407/clear?cbe4fc38)
我的想法是首先加载整个视图,然后分成4个部分,将中间的两个部分放入CGImage中,并以某种方式用透视动画它们同时转换顶部和底部部分,使它们相互滑动(最后,中间两个)零件应该变得不可见。)
我也应该能够展开这个视图并滚动UITextView。
我不是在寻找一个准备好的答案,只是指向正确的解决方案。 我遇到了CALayer,CABasicAnimation和CGImage,但还不知道如何解决这个问题。
答案 0 :(得分:2)
我认为你的方法很合理。由于无法将变换应用于视图的一部分,因此必须将容器视图拆分为单独的部分。您可以使用CALayer
方法renderInContext:
将视图渲染为静态图像。然后,您可以将此图像分割为所需的部分,将图像部分放在原始视图上(或用图像替换视图)并为图像设置动画。动画完成后,以新的形式恢复视图。
答案 1 :(得分:1)
一些指示:
将您的UIView
转换为图片:请参阅此post;要么拍摄视图的4个“快照”,要么:
1.2你拿一个,然后裁剪得到的图像(见here进行裁剪);
创建一个新视图并添加4个CALayers作为self.layer
的子图层;每个图层的contents
属性设置为相应的UIImage
;
根据需要为视图图层设置动画;看看this file from the Leaves framework看看如何做到这一点;基本上,此代码使用CATransaction和转换来为图层的属性设置动画(在这种情况下,表示一个图层的位置与另一个图层相对),这样当属性值更改时,图层会相应地重新绘制。
< / LI> 醇>希望它有所帮助。