我在导航控制器中有一个视图。
然后我在这个视图中添加一个子视图并偏移其原点高度,使其仅覆盖屏幕的一半(另一半从屏幕底部溢出)。我希望能够向上拖动此视图,但当它到达导航栏的底部时会停止,并且当它到达原点偏移点时向下拖动时同样停止。
我正在使用UIPanGestureRecognizer
来处理拖动视图,目前我可以使用以下代码在某种程度上达到我想要的效果:
func handlePanGesture(recognizer: UIPanGestureRecognizer) {
let minX: CGFloat = recognizer.view!.frame.size.width/2
let maxX: CGFloat = minX
let minY: CGFloat = bottomNavbarY+recognizer.view!.frame.size.height/2
let maxY: CGFloat = pulloverOffset+recognizer.view!.frame.size.height/2
recognizer.view!.center = CGPointMake(min(max(minX,recognizer.view!.center.x),maxX), min(max(minY,recognizer.view!.center.y),maxY))
...
这可以防止视图从一侧移动到另一侧并阻止视图移动经过顶部和底部“边界”,但是,当尝试将其拖过一个时,仍然会有一些轻微的移动。
有没有更好的方法可以做到这一点完全阻止它完全超越边界?