Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何动画层距离从观众-用户-相机改变与透视?_Ios_Ios5_Animation_Core Animation - Fatal编程技术网

Ios 如何动画层距离从观众-用户-相机改变与透视?

Ios 如何动画层距离从观众-用户-相机改变与透视?,ios,ios5,animation,core-animation,Ios,Ios5,Animation,Core Animation,我正在尝试制作一个与Air bnb iOS应用程序开头的动画非常相似的动画 以下是动画的视频: 其想法是模拟一层从非常接近用户飞行到最后粘在远处的表面 我读过一些关于操纵layer.transform.m34的文章,其中对我帮助更大的是 通过在z轴上应用透视和平移,我设法使图层看起来更大 以下是我使用的代码: CALayer *aLayer = [CALayer layer]; aLayer.frame = ... aLayer.backgroundColor = ... CATransform

我正在尝试制作一个与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;
问题是我无法将其动画化回
CATTransferorM3DidEntity
。 我不习惯CoreAnimation,所以我可能尝试了一种不好的方法。 如果有人能指出我做错了什么或找到更好的解决方案,那将大有帮助


提前谢谢

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

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

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

我不清楚问题出在哪里。为什么需要将其动画化回标识?您对上面转换的动画满意吗?@jrturton标识是动画末尾应该放置的位置。我想在z轴上用透视图转换层来开始动画,然后用带有标识变换的层来结束动画(就像在视频中一样)。现在它不是动画,它只是看起来比实际帧更接近(更大)。哦,我现在明白了。好啊到目前为止,你对动画有什么看法?什么都没有?@jrturton我尝试了将转换设置为identity的动画,但根本不起作用。