有限制地上下移动视图

时间:2015-10-12 06:52:13

标签: ios swift uipangesturerecognizer

我已经获得了此代码,允许用户将视图拖动到一定程度:

  func handlePan(recognizer:UIPanGestureRecognizer) {
    let translation = recognizer.translationInView(self.view)

    print("the translation x:\(translation.x) & y:\(recognizer.view?.frame.minY)")

    if(recognizer.view?.frame.minY > -268)
    {
        if let view = recognizer.view {

            view.center = CGPoint(x:view.center.x,
                y:view.center.y + translation.y)
        }

        recognizer.setTranslation(CGPointZero, inView: self.view)
    }


}

现在,我还想让用户在一定程度上向下拖动视图。 如何更改功能让他这样做?

目前,我可以向上移动视图,当它达到一定高度时,它会停止并且不能再向任何方向移动。

1 个答案:

答案 0 :(得分:0)

尝试更改输入处理移动中心的部分代码的条件。它可能看起来像这样(Obj-C片段):

if(recognizer.view.frame.origin.y <= 256 && recognizer.view.frame.origin.y >= 0) {
  // logic to move center
}

这会检查两个方向的视图位置。

编辑:

要在视图超出指定范围后移动视图,您始终可以检查新中心点是否在该范围内。例如

CGPoint newCenter = CGPointMake(recognizer.view.center.x, recognizer.view.center.y + translation.y);
if (newCenter.y > 256) {
    newCenter.y = 256;
}
if (newCenter.y < 0) {
    newCenter.y = 0;
}

这是一个非常简单,也许不是非常聪明的解决方案,但它应该可以工作,因为视图将无法离开范围。