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

Posted

技术标签:

【中文标题】如何在另一个视图 iOS 上垂直翻转视图?【英文标题】:How to flip the view vertically on another view iOS? 【发布时间】:2014-12-11 07:34:12 【问题描述】:

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

请通过链接了解一下: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));

请任何知道的人分享一下,我需要实现这个动画。

【问题讨论】:

【参考方案1】:

尝试使用带有UIViewAnimationOptionTransitionFlipFromBottomUIViewAnimationOptionTransitionFlipFromTop 的UiView 的transitionFromView 方法在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];

【讨论】:

我试过了,但它会对容器视图进行转换,我需要单个视图,这就是我选择 CABasicAnimation 的原因 如果用户向下滑动,我有一个容器视图,其中四个图像视图对齐为堆栈。唯一的顶部图像视图应该垂直翻转。从您的代码中,它会翻转容器视图本身。 在滑动选择器方法中,您应该使用位于堆栈顶部的视图设置翻转视图,您是否在管理它? 翻转视图是旋转视图,不会影响其他视图。 这里的主要问题是,顶部图像视图在旋转时不应与下方视图合并。【参考方案2】:

只需尝试注释代码中的最后一行,您的视图就会在同一位置设置动画或垂直翻转,而不会与底层视图合并。

【讨论】:

以上是关于如何在另一个视图 iOS 上垂直翻转视图?的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 如何垂直转换(翻转)自定义 UITableViewRowAction

垂直于屏幕时,视图在 Y 轴上的旋转动画上剪辑

如何在 Swift(Xcode 6.3)中翻转标签(获取镜像视图)

如何检测按下的按钮并将其显示在另一个视图上? Objective-C

iOS:如何在另一个表格视图中显示搜索结果?以及如何在搜索时显示建议?

如何在 iOS 上仅水平拉伸时垂直平铺 UIImage?