【问题标题】:UICollisionBehavior boundary not workingUICollisionBehavior 边界不起作用
【发布时间】:2015-09-28 08:51:27
【问题描述】:

我在导航控制器中有一个视图。

然后我向这个视图添加一个子视图并偏移它的原始高度,以便它只覆盖屏幕的一半(另一半溢出屏幕底部)。 我希望能够向上拖动这个视图,但是当它到达导航栏的底部时它会停止。

我正在使用UIPanGestureRecognizer 来处理视图的拖动,这工作正常,但它似乎不会在边界处停止。

这是我正在使用的代码:

bottomNavbarY = UIApplication.sharedApplication().statusBarFrame.size.height + self.navigationController!.navigationBar.frame.size.height

view.addSubview(pullover.view)
pullover.view.frame.origin.y = pulloverOffset

var animator = UIDynamicAnimator(referenceView: view)
var collision = UICollisionBehavior(items: [pullover.view])
collision.translatesReferenceBoundsIntoBoundary = true
collision.addBoundaryWithIdentifier("upper", fromPoint: CGPointMake(0, bottomNavbarY), toPoint: CGPointMake(UIScreen.mainScreen().bounds.size.width, bottomNavbarY))
animator.addBehavior(collision)

但是,当我向上拖动覆盖视图时,它不会与任何边界交互,它只是直接穿过。我究竟做错了什么?是否可以使用边界来阻止用户以这种方式拖动的视图?

【问题讨论】:

    标签: ios swift boundary uidynamicanimator uicollisionbehavior


    【解决方案1】:

    当我向上拖动覆盖视图时,它不会与任何边界交互

    您误解了此功能。碰撞边界适用于 UIKit Dynamics 负责移动视图的时候。拖动是用户负责移动视图的时候。如果您希望拖动在某个点停止,则由您在手势识别器处理程序中考虑视图的位置,如果您不想移动视图,则不要移动它。

    【讨论】:

    • 该死的。心想可能是这样的。我之前尝试在手势识别器处理程序中执行此操作,但如果它被非常快速地拖动,则会遇到阻止它通过一个点的问题。你知道克服这个问题的方法吗?
    • 我不知道“克服这个”是什么意思。如果您有关于如何使平移手势识别器拖动的对象在通过某个假想边界之前停止的问题,请将其作为一个新问题提出。我知道是怎么做到的!但我相信我已经回答了你实际提出的问题。
    • 大声笑,你好像很清楚我所说的“克服这个”是什么意思......无论如何感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 2021-01-17
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多