Ios CATTransform3D/CGAffineTransform是否向现有动画转换添加透视图?
我通过Ios CATTransform3D/CGAffineTransform是否向现有动画转换添加透视图?,ios,animation,matrix,cgaffinetransform,catransform3d,Ios,Animation,Matrix,Cgaffinetransform,Catransform3d,我通过CGAffineTransform创建了一个动画。我使用了animateWithDuration:并在其中设置了transform。但是我忘记了所有的视图都应该从一个定义的角度进行翻译。我想实现类似的透视变换: 正如我所想: 它是三维空间 所有矩形都有一条属于一个不可见表面的边 所有的矩形都有相等的角度(因此所有的矩形都是平行的) 人的视线集中在中心,所以对人来说,所有的矩形都有不同的角度(但这只是因为透视效果) 据我所知,CGAffineTransform和CATTransform
CGAffineTransform
创建了一个动画。我使用了animateWithDuration:
并在其中设置了transform。但是我忘记了所有的视图都应该从一个定义的角度进行翻译。我想实现类似的透视变换:
正如我所想:
- 它是三维空间
- 所有矩形都有一条属于一个不可见表面的边
- 所有的矩形都有相等的角度(因此所有的矩形都是平行的)
- 人的视线集中在中心,所以对人来说,所有的矩形都有不同的角度(但这只是因为透视效果)
CGAffineTransform
和CATTransform3D
在它们之间是可转换的,因此对我来说它们之间没有区别
问题是:
1) 我知道如何表示旋转、缩放、平移等,但如何实现围绕锚点的透视图?我应该执行哪些操作和顺序
2) 即使我能找到正确的动作序列,那么如何将它们应用到现有的动画CGAffineTransform?据我所知,一半的变换应该是静态的,另一半应该是动画的。如何合并它们?问题1 我写过代码,但没有透视图 我拒绝透视的原因是它太慢了 在iPad中,你无法通过删除不可见的页面来优化应用程序,因为它们可能都是可见的(或者离边缘太近而无法释放)。所以你只能缩小它们的尺寸。这很奇怪,但是如果你想实现iphone版本,那么你不能优化大小,但是可以优化不可见的页面 在iPad中,你需要太多的计算,因此也需要重新绘制通话。此外,您可以在后台存储
UIWebView
对象,这会消耗大量内存(我在网站上查看了UIWebView
s的许多实例,它只是一个“硬”且复杂的网站)。甚至在苹果发出内存警告之前,一切都变慢了
问题2
警告CGAffineTransform
和CATTransform3D
仅在有时它们之间是可转换的。至少不是每个CATTransform3D
都可以转换为CGAffineTransform
,例如,如果它像我的例子那样包含透视图
在我的例子中,我需要CATTransform3D
和CGRect
,因为即使应用第一个视图,也只会缩放整个视图,但如果应用第二个视图,则会减小视图的边界,但其子视图不会按比例缩放,并且某些属性(例如字体大小)完全不缩放,您需要手动缩放它们。最后,我使用了以下组合:
1) 边界为全屏,中心位于屏幕中心;
2) 与1相同,但已应用变换以缩放并移动到适当的位置;
3) 与2相同,但我从
transform
属性中删除了缩放,并通过更小的边界再次添加,并在必要时减小了大小、字体等。这种状态只是为了减少内存消耗。你有没有弄明白这一点?我遇到了非常相似的事情。