gpt4 book ai didi

iphone - 使用CATransform3D创建翻转动画

转载 作者:行者123 更新时间:2023-12-03 20:08:57 24 4
gpt4 key购买 nike

我正在尝试重新创建 UIViewAnimationTransitionFlipFromRight(和左)。我这样做的原因如下所示,是在动画中间当图层被遮挡时对 AVCaptureVideoPreviewLayer 进行更改。 UIViewAnimationTransitionFlipFromRight 不会让我中途停止动画,进行 session 更改,然后继续,所以这是我最好的尝试。

虽然这有效,但它与 UIViewAnimationTransitionFlipFromRight 不同。该层开始旋转,但更多的是向后和对角滑动(很难描述),然后反转动画的第二部分。我正在寻找图层的右侧翻转到后面,然后继续向左移动。相反,右侧从右侧开始,旋转到后面,然后再次旋转到右侧。

我做错了什么?

更新:第一次可以正常旋转。之后,上述问题依然存在。是否与必须重置的 AVCaptureVideoPreviewLayer 有关?不确定,只是猜测。

[UIView animateWithDuration:1.5 delay:0.0 
options:UIViewAnimationCurveEaseIn
animations:^{
CATransform3D frontTransform = CATransform3DIdentity;
frontTransform.m34 = 1.0 / -850.0;
frontTransform = CATransform3DMakeRotation(M_PI_2,0.0,1.0,0.0); //flip halfway
frontTransform = CATransform3DScale(frontTransform, 0.835, 0.835, 0.835);
previewLayer.transform = frontTransform;

}
completion:^(BOOL finished){
if (finished) {

[previewLayer setAutomaticallyAdjustsMirroring:NO];
[previewLayer setMirrored:NO];

[session beginConfiguration];
[[self captureManager] setMirroringMode:AVCamMirroringOff];
[session commitConfiguration];

[UIView animateWithDuration:1.5
delay:0.0
options:UIViewAnimationCurveEaseOut
animations:^{
CATransform3D backTransform = CATransform3DIdentity;
backTransform.m34 = 0.0f;
backTransform = CATransform3DMakeRotation(M_PI,0.0,1.0,0.0); //finish the flip
backTransform = CATransform3DScale(backTransform, 1.0, 1.0, 1.0);
previewLayer.transform = backTransform;
}
completion:^(BOOL finished){
//nothing upon completion
}
];
}
}
];

最佳答案

您没有说出“它与 UIViewAnimationTransitionFlipFromRight 不同”的意思。你看到透视了吗?我发现在调用 CATransform3D 函数之前需要先指定 .m34 字段才能获得透视效果。在声明变换之后和调用 CATransform3DMakeRotation 之前立即进行设置。

关于iphone - 使用CATransform3D创建翻转动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5606467/

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