我正在尝试制作一个与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,所以我可能正在尝试一种糟糕的方法。如果有人能指出我做错了什么或更好的解决方案,那将有很大帮助。
提前感谢!
您需要先创建图层并将其添加到图层树中。一旦图层成为图层树的一部分,隐式动画就应该可以工作。
我认为您可能需要这样做:
创建图层将图层添加到父图层使用 performSelector:withObject:afterDelay: 运行剩余的动画代码:这样系统就有机会在运行要执行隐式动画的代码之前将图层添加到图层中。