1

我正在尝试制作一个与 Air bnb iOS 应用程序开头的动画非常相似的动画。

这是动画的视频:视频

这个想法是模拟一个层从非常靠近用户飞到最后粘在远处的表面上。

我读过一些关于操纵 的文章,layer.transform.m34而对我帮助更大的是这篇文章。

通过在 z 轴上应用透视和平移,我设法让图层看起来更大。

这是我使用的代码:

CALayer *aLayer = [CALayer layer];
aLayer.frame = ...
aLayer.backgroundColor = ...
CATransform3D perspectiveTransform = CATransform3DIdentity;
perspectiveTransform.m34 = 1.0f/-250.0f;
perspectiveTransform.m44 = 0.0f;
perspectiveTransform = CATransform3DTranslate(perspectiveTransform, 0.0f, 0.0f. -100.0f);
aLayer.transform = perspectiveTransform;

问题是我无法让它动画回到CATransform3DIdentity. 我不习惯 CoreAnimation,所以我可能正在尝试一种不好的方法。如果有人能指出我做错了什么或更好的解决方案,那将有很大帮助。

提前致谢!

4

1 回答 1

0

您需要先创建图层并将其添加到图层树中。一旦图层成为图层树的一部分,那么隐式动画应该可以工作。

我认为您可能需要这样做:

创建图层 将图层添加到父图层使用 performSelector:withObject:afterDelay: 运行剩余的动画代码,因此系统有机会在执行隐式动画的代码运行之前将图层添加到图层。

于 2012-11-21T20:50:42.127 回答