gpt4 book ai didi

iphone - 如何使用 CATransform3DMakeRotation 从左到右旋转 View

转载 作者:行者123 更新时间:2023-12-01 19:13:37 25 4
gpt4 key购买 nike

我知道如何从右到左旋转 View

CATransform3D transform = CATransform3DIdentity;
transform = CATransform3DMakeRotation(M_PI, 0.0f, 1.0f, 0.0f);
transform.m34 = 0.0015;
view.layer.transform = transform;

但我不能从左到右旋转它。
请帮我。

最佳答案

我不确定您所说的“从左到右”和“从右到左”是什么意思。无论如何,正如您所发现的,您无法仅通过设置变换矩阵来控制动画的方向,因为 -M_PI 和 +M_PI 具有相同的最终效果,因此Core Animation无法可靠地知道您选择哪种方式想让它旋转。

相反,you can animate the transform.rotation.y key path of the layer .这有点复杂,特别是因为您想要动画 View 的图层而不是独立图层(不受 View 控制)。

无论如何,这是我测试的代码:

- (IBAction)rotateButtonWasTapped:(id)sender {
// Establish the perspective to be used during the animation.
CATransform3D transform = CATransform3DIdentity;
transform.m34 = 0.0015;
self.imageView.layer.transform = transform;

static CGFloat kAngle = -M_PI;

[CATransaction begin]; {
// After the animation completes, make the transform “permanent”. Otherwise it
// will be undone when the animation is removed from the layer.
[CATransaction setCompletionBlock:^{
self.imageView.layer.transform = CATransform3DRotate(transform, kAngle, 0, 1, 0);
}];

// Animate the rotation using Core Animation's extension to Key Value Coding.
// The sign of kAngle determines the direction of rotation.
CABasicAnimation *animation = [CABasicAnimation
animationWithKeyPath:@"transform.rotation.y"];
animation.fromValue = @0;
animation.toValue = @(kAngle);
animation.duration = 1;
[self.imageView.layer addAnimation:animation forKey:animation.keyPath];
} [CATransaction commit];
}

这会旋转 View ,使得 View 的左边缘在旋转期间“更靠近”用户。如果这不是您所说的“从左到右”,请更改 kAngle 的定义。至 M_PI它会向另一个方向旋转。我已经测试了两种方式。您甚至可以在一个动画中多次旋转图层。例如,尝试定义 kAngle-3 * M_PI .

关于iphone - 如何使用 CATransform3DMakeRotation 从左到右旋转 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14746517/

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