gpt4 book ai didi

ios - 有没有办法用关键点进行 3D 变换?

转载 作者:行者123 更新时间:2023-11-29 03:55:05 24 4
gpt4 key购买 nike

我创建了一个 3D 立方体 View 过渡,它执行以下操作:

  • 创建图层容器。
  • 添加 2D 空间中的当前 View 。
  • 将下一个 View 添加到右侧并旋转 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;
}

在动画结束时,我想执行一次抖动,就好像立方体安装在 Spring 上一样。我尝试播放一系列围绕Y轴旋转的动画,逐渐衰减。

我设置了一系列动画,但每个动画都从原点开始,而不是图层到达的最后一个点。 . .我该如何解决这个问题?一种方法是首先在图层上设置变换,

但是有没有办法用关键点进行 3D 变换?

最佳答案

在我看来,您正在寻找CAKeyframeAnimation。您无需指定 toValue,而是传递一个 values 数组以及可选的 keyTimes(包括开始值和结束值)。

从源头开始的问题来自于使用removedOnCompletion。通过这样做,您将引入演示文稿(屏幕上显示的内容)和模型(图层的属性值)之间的差异。更简洁的方法是显式设置最终值并从前一个值到最终值进行动画处理。当动画结束时,这将使您处于干净的状态。

关于ios - 有没有办法用关键点进行 3D 变换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16604781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com