我已经获得了此代码,允许用户将视图拖动到一定程度:
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)
}
}
现在,我还想让用户在一定程度上向下拖动视图。 如何更改功能让他这样做?
目前,我可以向上移动视图,当它达到一定高度时,它会停止并且不能再向任何方向移动。
答案 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;
}
这是一个非常简单,也许不是非常聪明的解决方案,但它应该可以工作,因为视图将无法离开范围。