如何在另一个视图iOS上垂直翻转视图?

时间:2014-12-11 07:34:13

标签: ios swift uiview core-animation caanimation

我正在开发一个包含堆叠视图的应用程序,我希望当用户向下滑动图像视图时此翻转并显示另一个视图。它工作但是当它垂直翻转时它与下面的视图合并并显示另一个图。

请仔细阅读链接,我们会知道:https://dribbble.com/shots/1667024-Events-deck-animation

在上面的链接中,在向左和向右滑动之后的动画中,用户将垂直向下而不与下面的视图合并。请提供任何帮助如何实现此垂直翻转动画,如上述链接所示。

我正在使用以下代码对单层进行翻转:

float duration = 1.0f;
CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];
animation.delegate = self;
animation.fromValue = [NSNumber numberWithDouble:-0.0f * M_PI];
animation.toValue = [NSNumber numberWithDouble:-1.0f * M_PI];
animation.duration = duration;
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeRemoved;
animation.repeatCount =1;
animation.beginTime = CACurrentMediaTime();
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
[photo.layer addAnimation:animation forKey:@"rotationX"];
photo.layer.position = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds));

请任何人知道它,我需要实现这个动画。

2 个答案:

答案 0 :(得分:2)

尝试使用UiView的transitionFromView方法UIViewAnimationOptionTransitionFlipFromBottomUIViewAnimationOptionTransitionFlipFromTop来实现UIView上的动画而不是视图的图层。

像:

[UIView transitionFromView:viewToReplace
                    toView:replacementView
                  duration:1
                   options:UIViewAnimationOptionTransitionFlipFromTop
                completion:nil];

viewToReplace

的滑动手势选择器方法中添加此调用

有关详情,请参阅此链接:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/doc/uid/TP40006816-CH3-SW105

修改: 可能这对你有用。

// Consider flipView as the view that need to flip vertical 
[UIView transitionWithView:flipView
                      duration:1
                       options:UIViewAnimationOptionTransitionFlipFromTop
                    animations:^{
                        // flipView.backgroundColor = [UIColor greenColor];
                        // update to be done with flip
                       } completion:nil];

答案 1 :(得分:0)

只需尝试对代码中的最后一行进行注释,您的视图就会在同一个地方动画或垂直翻转,而不会与基础视图合并。