我正在寻找一种方法,能够像JetBlue iPhone应用程序那样从屏幕外部滑出部分隐藏的工具面板。我知道如何使用常规的滑动手势识别器实现这一目标,但该应用程序有一个特定的门槛,超过该门槛后,面板会“弹回”到屏幕上的位置,否则它将再次隐藏在屏幕外部。
我该如何实现这种滑动显示的门槛手势识别器?有没有任何开源项目可以进行这种UI操作?
我该如何实现这种滑动显示的门槛手势识别器?有没有任何开源项目可以进行这种UI操作?
CGRect newPanelFrame = panel.frame;
if (newPanelFrame.origin.y + dragOffset > 275) {
newPanelFrame.origin.y += dragOffset / 2.0;
}
panel.frame = newPanelFrame;
touchesEnded:withEvent:
或if (gestureRecognizer.state == UIGestureRecognizerStateEnded)
中。CGRect newPanelFrame = panel.frame;
if (newPanelFrame.origin.y > 275) {
newPanelFrame.origin.y = 275;
}
panel.frame = newPanelFrame;
我从未使用UIPanGestureRecognizer
是因为我一直不知道如何获取非累积的平移(translationForView:是累积的),如果想在阈值后减缓拖动,则这是必需的。
我刚刚在研究如何实现类似的效果时,偶然发现了这篇文章,于是决定尝试一下JetBlue。
在玩弄滑动面板一会儿后,我实际上认为JetBlue的开发人员采用了稍微不同的方法。
JetBlue应用程序中滑块的动作似乎比使用一组UIGestureRecognizers更好;它能够根据用户快速滑动的速度以不同的速度进行动画处理,并且橡皮筋也可以正确地补偿这一点。
因此,在这一点上,我实际上认为他们没有使用UIGestureRecognizers,而那个面板实际上只是一个标准的UIScrollView,对齐到应用程序窗口的底部,并通过一些额外的逻辑(可能是通过委托应用)来确保滚动视图在“打开”和“关闭”状态之间不会停止动画。