【问题标题】:How can I flip between two UIView?如何在两个 UIView 之间切换?
【发布时间】:2012-11-07 22:03:33
【问题描述】:

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

我正在寻找的动画看起来像this

上例的唯一问题是它使用了两个UIViewController 对象,而UITextView 不是UIViewController 的子类,所以同样的原理不适用。

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

【问题讨论】:

    标签: objective-c ios5 uiview xcode4 uiviewanimation


    【解决方案1】:

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

    【讨论】:

    • 这会翻转整个屏幕,而不仅仅是 UITextView。除此之外,它还有效。
    • 如果你的 UITextViews 的通用父视图是当前屏幕的主视图,那么是的,它会翻转整个屏幕。常见的superview是什么翻转;您可以通过引入另一个视图作为文本视图的父视图和根视图的子视图来避免翻转整个屏幕。
    【解决方案2】:

    看起来你的问题已经回答了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>

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多