UIPanGestureRecognizer 滑动 UIView 动画

Posted

技术标签:

【中文标题】UIPanGestureRecognizer 滑动 UIView 动画【英文标题】:UIPanGestureRecognizer sliding UIView animation 【发布时间】:2014-07-14 13:10:49 【问题描述】:

我知道在 GitHub 上有很多此类问题的答案以及许多库,但我只是想让它保持轻松和简单。我只想将菜单移出并使其跟随我的手指。那部分有效,但视图最初并没有顺利滑出……它只是出现在我手指所在的位置。这是我所拥有的:

//viewDidLoad
UIPanGestureRecognizer *panSettings = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan:)];
[panSettings setDelegate:self];
[self.view addGestureRecognizer:panSettings];

UIView *container = [[UIView alloc]initWithFrame:CGRectMake(320, 0, self.view.frame.size.width, self.view.frame.size.height)];
//...drop shadows and such...
[self.view addSubview:_container];

- (void)handlePan:(UIPanGestureRecognizer *)sender
    CGPoint velocity = [sender velocityInView:self.view];
    CGPoint translation = [sender translationInView:self.view];
    if (velocity.x < 0 && translation.x < -50) 
        if (_container.frame.origin.x != 0) 
            panCoord = [sender locationInView:self.view];
            [UIView animateWithDuration:0.3 animations:^
                _container.frame = CGRectMake(panCoord.x-100, 0, self.view.frame.size.width, self.view.frame.size.height);
            ];
        
    

处理平底锅:我想检查幻灯片的走向,检查多长时间并检查容器的位置。一旦滑动向左更负然后-50,我想让它顺利滑出到手指位置......有什么建议吗?

【问题讨论】:

你的 UIView 动画在哪里? @SantaClaus 我也尝试了 UIView 动画,它仍然具有仅出现在手指位置的相同效果。 您也可以使用触控方法(即触控开始、触控移动、触控结束)来完成这些操作 @yourwish 我看到了这些示例...要使用触摸事件,我需要子类化 UIView 并将这些方法添加到该子类中?因为我无法让触摸事件在self.view 中工作 使用你自己创建的委托方法来通知另一个类你的触摸。 【参考方案1】:

我用过:

  UISwipeGestureRecognizer *sgr = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightRevealToggle:)];
  sgr.direction = UISwipeGestureRecognizerDirectionRight;
  [self.view addGestureRecognizer:sgr];

检查一下可能更容易

【讨论】:

谢谢,我知道这样会更容易,但这违背了将视图拖过屏幕的目的。

以上是关于UIPanGestureRecognizer 滑动 UIView 动画的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableView 上滑动删除以使用 UIPanGestureRecognizer

UIPanGestureRecognizer:在滑动结束时检测触摸位置

UIPanGestureRecognizer 滑动 UIView 动画

UIPanGestureRecognizer上下左右滑动方向判断算法

使用 UIPanGestureRecognizer UINavigationController 向后滑动不起作用

UIPanGestureRecognizer 在滑动单元格以获得更多按钮时如何在用户滑动不到一半时使视图反弹