我创建了一个 3D 立方体视图转换,它执行以下操作:
- 创建一个图层容器。
- 在 2D 空间中添加当前视图。
- 将下一个视图添加到右侧并旋转 90 度(就像在立方体中一样)
- 执行动画以旋转立方体。
这是代码 - 它工作正常。. . 下面的实际问题:
- (CAAnimation*)makeRotationWithMetrics:(BBRotationMetrics*)metrics
{
[CATransaction flush];
CAAnimationGroup* group = [CAAnimationGroup animation];
group.delegate = self;
group.duration = metrics.duration;
group.fillMode = kCAFillModeForwards;
group.removedOnCompletion = NO;
group.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
CABasicAnimation* translationX = [CABasicAnimation animationWithKeyPath:@"sublayerTransform.translation.x"];
translationX.toValue = metrics.translationPointsX;
CABasicAnimation* rotation = [CABasicAnimation animationWithKeyPath:@"sublayerTransform.rotation.y"];
rotation.toValue = metrics.radians;
CABasicAnimation* translationZ = [CABasicAnimation animationWithKeyPath:@"sublayerTransform.translation.z"];
translationZ.toValue = metrics.translationPointsZ;
group.animations = [NSArray arrayWithObjects:rotation, translationX, translationZ, nil];
return group;
}
在动画结束时,我想执行一个微动,就好像立方体安装在弹簧上一样。我尝试播放一系列动画以围绕 Y 轴旋转,逐渐衰减。
我设置了一系列动画,但每个动画都从原点开始,而不是图层到达的最后一点。. . 我该如何解决?一种方法是首先在图层上设置变换,
但是有没有办法用关键点进行 3D 变换?