【问题标题】:How to create a controllable flip effect (flip as far (and fast) as you drag) of an UIView如何创建 UIView 的可控翻转效果(拖动时翻转尽可能远(并且快速))
【发布时间】:2010-04-17 17:20:44
【问题描述】:

我有一张卡片(你可以说是抽认卡)

我能做什么:

手指扫过抽认卡时,卡片会翻转。它是通过检测发生的 touchesBegan 和 touchesMoved 然后我做类似的事情

[UIView beginAnimations:@"View Flip" context:nil]; 
[UIView setAnimationDuration:0.5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
if (left) {
    [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:self.flashCardView cache:YES];
}else{
    [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView:self.flashCardView cache:YES];
}

我不能做(但想做)的事情:

我想以某种方式拖动翻盖。 想象一下,你有一张抽认卡并且你认为你知道答案,你开始翻转卡片,因为你想看看你是否正确,但是然后......没有停止......你犹豫了,把卡片转回原来是这样,重新思考,得到真正的答案,然后最后翻转看看你犹豫是对的。

现在我只有:一旦开始翻转,就无法停止。

那么您对如何执行此操作有任何提示吗?有什么要读的吗?我对cocoa和iPhone开发的了解还处于起步阶段

EDIT我现在更有经验了,但是我还没有做过这样的自定义动画,也许有人可以给我提个醒?

【问题讨论】:

    标签: iphone uiview touch drag flip


    【解决方案1】:

    您无法使用预设的 UIView 动画来实现您想要做的事情,因为该动画是一次性的并且无法被拦截。您可以使用 OpenGL 进行真正的 3D 转换(您需要的是绕轴旋转),或者为了更快的实现,请尝试按照 drawonward 的建议进行 CALayer 转换。

    Here 是在 OpenGL 中实现的交互式 3D 页面翻转的示例。它使用私有 API,但它可能会帮助您了解如何响应用户输入并适当地应用转换。

    【讨论】:

    • 对于绕轴旋转,您可以使用 CALayer 变换属性。与 UIView 变换不同,CALayer 允许 3D 变换。
    • 嗯,我不知道 CALayer。这可能是一种更好的方法,OpenGL 可能对于简单的翻转动画来说太过分了。
    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    相关资源
    最近更新 更多