UIView动画翻转轴顶视图

时间:2011-12-09 21:27:27

标签: objective-c ios cocoa-touch uiview core-animation

我有UIView我希望动画翻转。这与UIViewAnimationOptionTransitionFlipFromTop不同,因为它将该轴放在视图的中间。我希望将轴放在视图的top处,这样它就会翻转,类似于一张纸从top axis(不是页面剥离)翻转的方式。

[UIView transitionWithView:self.view duration:0.6
                   options:UIViewAnimationOptionTransitionFlipFromTopAxis // <---- Wish there was an option like this                 
                animations:^{
                    // Exchange the views here


                } completion:NULL];

我认为使用标准UIView动画选项无法做到这一点。有什么替代方案,我可以控制翻转轴?

1 个答案:

答案 0 :(得分:3)

最简单的方法可能是将要翻转的视图封装在较高的偏移透明容器视图中,然后翻转该容器。换句话说:

  |-----|
  |     |
  |  B  |
  |     |
0 |     |
  ||---||
  || A ||
  ||---||
  |-----|

A是您要翻转的视图; B是容器; 0是屏幕的顶部。将过渡应用于B;通过在中间翻转B,你可以沿着它的顶部翻转A.

你也可以做一些更复杂的事情,并且只使用Core Animation自己实现翻转,但这有点容易。

<强>编辑:

如果您想采用核心动画方法,基本上您需要做的是将CATransform3D应用于图层以围绕水平轴旋转它,即theLayer.transform = CATransform3DMakeRotation(M_PI, 1, 0, 0)。但是,这会将它翻转到中间,这是你不想要的,所以你还需要将图层的anchorPoint从默认值(0.5, 0.5)更改为(0.5, 0)所以它的“起源”位于其顶部边缘的中心。您可能还想使用CATransform3D的m34成员对翻转转换应用透视效果,如here所述。