iphone - 如何像 JetBlue iPhone 应用程序一样从屏幕外轻轻拖动面板

标签 iphone objective-c ios uiview uiswipegesturerecognizer

我正在寻找一种方法来将部分隐藏的工具面板从屏幕上滑出,就像 JetBlue iPhone 应用程序所做的那样。我知道如何使用常规滑动手势识别器执行此操作,但该应用程序有一定的阈值,在该阈值之后面板会“捕捉”到屏幕上的位置,否则它会隐藏在屏幕外。

如何使用阈值类型的手势识别器实现这种滑动显示?是否有任何开源项目可以进行这种 UI 操作?

最佳答案

我编写的应用程序中有一个类似的界面元素。我的界面元素是整个工具面板的 UIViewController。我将 UIButton 放在抓手插图上,将按钮的类型更改为自定义,使其在视觉上消失。我将 Touch Drag Inside 和 Touch Drag Outside 连接到 IBAction,该 IBAction 根据拖动的移动位置调整面板的位置。我将 Touch Up Inside 和 Touch Up Outside 连接到最终确定 View 定位的 IBAction。如果触摸事件发生在离底部太近的地方,我就关闭面板。如果它发生在高于该阈值的任何地方,我将打开面板。我使用 UIView 的动画方法来平滑这些过渡。在 JetBlue 应用程序中看到的过度扩展元素可以在拖动事件处理程序中完成。随着面板越来越接近极限,随着触摸的每次移动,打开 View 的量越来越小。然后在最后确定时,只需将面板设置为动画回到它的首选结束位置。

JetBlue 应用程序与我的应用程序的不同之处在于,我的应用程序的抓取区域很小,但 JetBlue 的应用程序允许您滑动整个面板以调整位置。为了匹配该功能,我将调整我的实现以完全覆盖带有按钮的面板。每个人都会响应我的拖动事件,并且拖动会设置一个标志。然后我的修饰事件处理程序将检查标志是否已设置。如果是这样,完成面板的拖动。否则,执行与每个按钮关联的适当操作。

关于iphone - 如何像 JetBlue iPhone 应用程序一样从屏幕外轻轻拖动面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9810549/

相关文章:

iphone - 将数组复制到字符串并按顺序显示字符串

iphone - 在应用程序启动时加载一张图片,该图片可以从网上更新

objective-c - iPad 对触摸的响应速度有多快?

ios - 重新加载 UItableview 未更新标签

ios - 在 GMSMapview iOS 中显示两个位置的定位相机

ios - 是否可以为 iOS 创建自定义 UIView 并在 XIB 中使用它们?

ios - 'UINavigationBar'的可见@interface没有声明选择器'titleTextAttributes:'

iphone - iPhone 上的压缩 API

objective-c - 防止 iCloud 窗口在 OSX 10.8 应用启动时打开

ios - 以编程方式设置自动布局约束