ios - 我应该将底部工作表作为 subview 添加到当前 View Controller ,还是推送一个添加了 subview 的 UIWindow?

标签 ios swift uipangesturerecognizer uiwindow

我想根据图像实现底部工作表。 底部会有一个平移手势可以上下拉

我感到困惑的是:

  • 我是否应该向现有 View Controller 添加一个 View 并向该 View 添加平移手势以向上和向下拉动。
  • 应该创建一个新窗口并将底部工作表添加为 subview 并推送该窗口。

如果,我选择第二个选项我将如何在平移上更新窗口

enter image description here

最佳答案

您不应创建新的 UIWindow。通常一个 iOS 应用程序只有 1 个窗口。我看到的两个最佳选择是:

  1. 您可以添加 subview 和手势识别器来实现拉动。这意味着所有逻辑可能都在父 UIViewController 中。如果没有太多逻辑,并且工作表不必可重复使用,这是一个不错的选择。

  2. 如果工作表内部有更多逻辑,或者工作表具有可重用性,那么最好为此创建一个单独的 UIViewController。然后,您可以使用自定义动画和演示 Controller 来展示它。为此,查看 UIViewControllerAnimatedTransitioningUIPresentationController

我以前用过第二个选项。 UIPresentationController 负责将工作 TableView 定位在屏幕底部。它还使背景变暗,并附加手势识别器来处理拉动和解雇。

您可以使用本教程开始使用 UIPresentationController。您还可以从那里获取代码并根据您的需要进行调整:https://www.raywenderlich.com/915-uipresentationcontroller-tutorial-getting-started

关于ios - 我应该将底部工作表作为 subview 添加到当前 View Controller ,还是推送一个添加了 subview 的 UIWindow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54326009/

相关文章:

html - iOS 11,Cordova 应用侧边栏在滚动时消失

ios - 长按手势识别器仅在手指抬起时触发

iOS ARKit 指向 anchor 的指针

ios - UIScrollView:键盘以交互方式关闭

iphone - iOS:用 UIModalTransitionStyleFlipHorizo​​ntal 替换模态 ViewController

swift - Tableview 自动重新加载内容

ios - 在 ShareExtension 中访问网站 URL 和标题

swift - Swift 中获取 UIPanGestureRecognizer 的起点和终点

ios - UIPanGestureRecognizer 状态结束后动画中的小问题

ios - 为什么平移让用户将缩放 View 移到 super View 之外?