我正在尝试制作一个非常类似于Air bnb iOS app开头的动画。
以下是动画的视频:video
这个想法是模拟一个从非常靠近用户飞行的层到最终粘在远处的表面上。
我读过一些关于操纵layer.transform.m34
的文章和帮助我更多的文章this one。
通过在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所以我可能会尝试一种糟糕的方法。
如果有人能指出我做错了什么或者找到更好的解决方案,那将会有很大的帮助。
提前致谢!
答案 0 :(得分:0)
您需要先创建图层并将其添加到图层树中。一旦图层是图层树的一部分,隐式动画应该有效。
我想你可能需要这样做:
创建图层 将图层添加到父图层 使用performSelector运行剩余的动画代码:withObject:afterDelay:因此系统有机会在运行隐式动画的代码之前将图层添加到图层。