有限制地上下移动视图
Posted
技术标签:
【中文标题】有限制地上下移动视图【英文标题】:Move view up and down with limitations 【发布时间】:2015-10-12 06:52:12 【问题描述】:我有这段代码,它允许用户将视图向上拖动到一定程度:
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】:尝试更改输入处理移动中心的代码部分的条件。它可能看起来像这样(Obj-C sn-p):
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;
这是一个非常简单,也许不是很聪明的解决方案,但它应该可以工作,因为视图将无法离开范围。
【讨论】:
它没有用,它让我移动了一个非常小的视图 尝试将 0 和 256 值更改为其他值,这完全取决于您的视图在屏幕上的位置。 这样做,当视图因为达到最大高度而停止时,它就再也不能移动了,因为 origin.y 将始终保持不变以上是关于有限制地上下移动视图的主要内容,如果未能解决你的问题,请参考以下文章