芯动画动画的层水平翻转(Core animation animating the layer to

2019-06-26 23:14发布

我有两个视图和我想用芯的动画,动画每个视图的层的两个视图之间切换。 我希望动画就像是所提供的一个UIViewAnimationOptionTransitionFlipFromLeft但我不能设法去做。 我可以使层旋转180,然后当动画停止我转换到下一个视图。 如何才能做到这一点?

我使用下面的代码:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
self.view.layer.zPosition = 100;
CATransform3D transform = CATransform3DMakeRotation(M_PI, 0, 1, 0);
[animation setToValue:[NSValue valueWithCATransform3D:transform]];
[animation setDuration:.5];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[animation setFillMode:kCAFillModeForwards];
[animation setRemovedOnCompletion:YES];
[animation setDelegate:self];

[self.view.layer addAnimation:animation forKey:@"test"];

而在代表我转换到下一个视图。 但是,这并没有太大的意义,并通过默认的动画提供的动画不一样热闹。 如何才能实现这一目标?

Answer 1:

如何使它看起来像一个3D旋转

您的旋转看起来并不像它发生在三维空间中,因为有你的变换没有观点。 更改m34的价值转化为像1.0 / 800.0小东西,你应该看到它与角度旋转。

CATransform3D transform = CATransform3DMakeRotation(M_PI, 0, 1, 0);
transform.m34 = 1.0/800.0;
[animation setToValue:[NSValue valueWithCATransform3D:transform]];

所述3D的那个值(第三列,所述行)转换控制的透视变换。 你可以阅读更多关于维基百科上的3D投影 ,如果你想了解更多关于它是如何工作的。

如何翻转两种观点,好像他们是在卡片的两面

有它看起来像这两种观点都是相同的观点的两个方面,你应该将它们添加旋转背面π度,层的改变doubleSided属性为NO两层。 现在面临着远离你的时候,他们将不可见。 当你应用旋转到正面和背面层,他们将改变这层是可见的。 注:旋转前到π度到2π,以便它完成它的旋转和朝向您回来。



Answer 2:

你可以使用

    [UIView transitionFromView:aView
                    toView:bView
                  duration:0.3
                   options:UIViewAnimationOptionTransitionFlipFromLeft
                completion:^(BOOL finished) {
                }
 ];

我找到你希望有相同的超图别的事情变得有点凌乱内两种观点。



文章来源: Core animation animating the layer to flip horizontally