Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用限制上下移动视图_Ios_Swift_Uipangesturerecognizer - Fatal编程技术网

Ios 使用限制上下移动视图

Ios 使用限制上下移动视图,ios,swift,uipangesturerecognizer,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

我有一段代码,允许用户在一定程度上拖动视图:

  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)
    }


}
现在,我还想让用户在一定程度上向下拖动视图。 我怎样才能改变函数让他这么做


目前,我可以向上移动视图,当视图达到某个高度时,视图停止,无法再向任何方向移动。

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

if(recognizer.view.frame.origin.y=0){
//移动中心的逻辑
}
这将检查两个方向上的视图位置


编辑:

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

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;
}
CGPoint newCenter=CGPointMake(recognizer.view.center.x,recognizer.view.center.y+translation.y);
如果(newCenter.y>256){
newCenter.y=256;
}
if(newCenter.y<0){
newCenter.y=0;
}

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

它不起作用,它让我移动了一个非常小的数量的视图尝试将0和256值更改为其他值,这完全取决于您的视图在屏幕上的位置。这样做,当视图达到最大高度而停止时,它再也不能移动了,因为原点。y将始终保持不变
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;
}