2012-11-07 44 views
2

我使用了两个UITextView对象。每个UITextView代表闪存卡应用程序中单卡的一面。就像使用常规闪存卡时一样,我希望用户能够翻转卡片。我在问如何在两个UIView对象之间翻转,因为UITextViewUIView子类,所以应该有相同的想法。如何在两个UIView之间翻转?

我在找的动画看起来像this

上述示例唯一的问题是它使用了两个对象UIViewControllerUITextView不是UIViewController的子类,所以相同的原则不适用。

关于如何做翻转动画的任何想法?

回答

4

您可以使用UIView类方法+transitionFromView:toView:duration:options:completion:来完成此操作。两个文本视图都需要是共同超级视图的后代。使用选项UIViewAnimationOptionTransitionFlipFromLeft(或... FromRight)进行水平翻转。

+0

这翻转了整个屏幕,而不仅仅是UITextView。除此之外,它的作品。 – Mickster37

+2

如果你的UITextViews的普通超视图是当前屏幕的主视图,那么是的,它会翻转整个屏幕。普通的超级观点是什么?您可以通过引入另一个视图作为两个文本视图的父代以及您的根视图的子视图来避免翻转整个屏幕。 – Tim

+0

智能修复,谢谢! – Mickster37

0

看起来像你的问题已经被回答here,仅仅调整了改造,使其水平,而不是垂直翻转:

- (void)horizontalFlip { 
    [UIView animateWithDuration:someDuration animations:^{ 
     yourView.layer.transform = CATransform3DMakeRotation(M_PI, 0.0, 1.0, 0.0); 
    } completion:^(BOOL finished){ 
     // code to be executed when flip is completed 
    }]; 
} 

如该链接的问题介绍,您可以进一步修改该做的一半通过使用M_PI_2翻转,则在第一动画的完成块中换出UITextViews并开始新的动画以完成翻转。

不要忘了#import math.h#import <QuartzCore/Quartz.h>在您的文件的顶部!

0

你可以先隐藏一个UITextView并显示另一个UITextView。要翻转它,你可以隐藏显示的UITextView并显示隐藏的UITextView。您也可以使用解释为here的动画来创建翻转效果。