UIViewanimation在视图顶部与轴交替

我有一个UIView ,我想animation翻转起来。 这不像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]; 

我想这是不可能做到这一点与标准的UIViewanimation选项。 有什么替代方法,我可以控制翻转轴?

最简单的方法可能是将您想要翻转的视图放在较高的偏移透明容器视图中,然后翻转该容器。 换一种说法:

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

A是你想要翻转的观点; B是容器; 0是屏幕的顶部。 把你的转换应用到B; 通过翻转B的中间,你沿着它的顶部翻转A.

你也可以做一些更复杂的事情,只需使用核心animation实现翻转,但是这样会更容易一些。

编辑:

如果你想采取核心animation的方法,基本上你需要做的是将一个CATransform3D应用到图层theLayer.transform = CATransform3DMakeRotation(M_PI, 1, 0, 0)围绕水平轴旋转,即theLayer.transform = CATransform3DMakeRotation(M_PI, 1, 0, 0) 。 然而,它会翻转它的中间,这是你不想要的,所以你也需要改变图层的anchorPoint从它的默认值(0.5, 0.5) anchorPoint (0.5, 0.5)(0.5, 0)以便它的“原点“是最高端的核心。 您也可以使用CATransform3D的m34成员将透视效果应用于翻转转换,如此处所述。