试图将UIView翻转过来

时间:2013-05-24 22:14:21

标签: ios animation uiviewanimation

我试图围绕视图的一个边缘翻转UIView,就好像视图是一个日历的页面,其中刚性页面移动过来如此:Calendar

我试图这样做:

[UIView transitionWithView:self.upperCard
                      duration:0.5
                       options:UIViewAnimationOptionTransitionFlipFromBottom
                    animations:^{
                            topView.frame = [self bottomHalfRectFromBounds];
                            bottomView.frame = [self topHalfRectFromBounds];
                            topView.flippedOver = YES;
                            bottomView.flippedOver = NO;
                       }
                    completion:NULL];

[self setNeedsDisplay];

这个方法的唯一问题是因为视图帧的动画是线性的,因此动画的动画彼此之间的时间不同(这是由于以恒定的速度翻转该区域的事实)视图中可见的与Cos(t)成比例,如果你不知道那就学习一些数学; P)。

所以基本上我要么找一种方法让帧动画有一个缓动函数......或者一个完全替代的方法......我不希望这看起来像一个页面卷曲,因为它会用于记分牌应用程序,所以请不要只是告诉我使用UIViewAnimationOptionCurlDown选项:P

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

一般来说,动画视图的框架不是解决此问题的好方法:它会导致视图必须在动画的每一步重绘自己,并且,正如您所注意到的,它看起来不像翻转就像线性刻度一样。

查看this answer - 特别是第二部分,讨论如何在CA中进行更好的方法。