手指控制视图幻灯片动画

时间:2013-08-17 13:28:38

标签: ios objective-c animation uiview

我想知道如何实现动画,用户可以用手指将一个视图滑过另一个视图。为简化起见,我将发布一些图片来解释我的意思。

首先我们有一个视图,它有一个设置图标(左上角是粉红色的东西)。可以通过任何必要的方式操纵视图 - 包括滑动。见图1。 picture 1

当用户按下设置按钮时,视图会滑开并显示下方的设置视图。为此,我只需使用[UIView beginAnimations:nil context:nil]调整主视图frame并提交动画。情况如下:(设置为紫色,主视图仍为相同颜色)

picture2

现在,当用户决定要将主屏幕恢复时,他必须抓住它并将其滑回原位。怎么样?现在我一直在使用UITapGestureRecognizer来触发反向动画,以便视图滑回原来的位置。这很混乱,用户仍然可以操作视图的那一小部分。

我希望视图跟随用户的手指并滑动并缩回其位置。移动时主视图不应该可操作。要理解我的意思,你可以查看雅虎天气应用程序,它有类似的事情发生 - 除了我的视图也会垂直缩小。第三张图片展示了“运动中”:

picture3

请提供可帮助我完成此任务的链接或代码。
干杯,Jan。

1 个答案:

答案 0 :(得分:0)

看看这段代码:

  1. MMDrawerController
  2. MSMatrixController
  3. 你可以试试这个

    -(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    
        UITouch *touch = [[touches allObjects] objectAtIndex:0];
        CGPoint touchPt = [touch locationInView:self];
    
        float deltaX = touchPt.x - beginPt.x; //where beginPt is CGPoint variable which was set in touches began
        float deltaY = touchPt.y - beginPt.y;
        if (deltaX < 0) {
            deltaX = -deltaX;
        }
        if (deltaY < 0) {
            deltaY = -deltaY;
        }
    
        CGPoint toPt;
        toPt.x = deltaX;
        toPt.y = deltaY;
    
        yourMovedView.center = toPt;
    }