我应该将 bottom sheet 作为子视图添加到当前视图控制器,还是推送一个添加了子视图的 UIWindow?
Should I add bottom sheet as a subview to current view controller or push a UIWindow with the subView added?
我想根据图像实现底部 sheet。
底部会有平移手势上下拉
我困惑的是:
- 我是否应该向现有视图控制器添加一个视图并向该视图添加平移手势以向上和向下拉动。
- 应该创建一个新的 window 并将底部 sheet 添加为子视图并推送 window.
如果,我选择第二个选项我将如何在 pan 上更新 window?
您不应创建新的 UIWindow
。通常一个 iOS 应用只有 1 个 window。我看到的两个最佳选择是:
您可以添加子视图和手势识别器来实现拉动。这意味着所有逻辑可能都在父 UIViewController
中。如果没有太多的逻辑,并且sheet不必重复使用,这是一个不错的选择。
如果sheet里面有更多的逻辑,或者sheet有可重复使用的,那么最好单独创建一个UIViewController
这个。然后,您可以使用自定义动画和演示控制器来展示它。为此查看 UIViewControllerAnimatedTransitioning
和 UIPresentationController
。
我以前用过第二个选项。 UIPresentationController
负责将 sheet 视图定位在屏幕底部。它还使背景变暗,并附加手势识别器来处理拉动和解雇。
您可以使用本教程开始使用 UIPresentationController
。您还可以从那里获取代码并根据您的需要进行调整:https://www.raywenderlich.com/915-uipresentationcontroller-tutorial-getting-started
我想根据图像实现底部 sheet。 底部会有平移手势上下拉
我困惑的是:
- 我是否应该向现有视图控制器添加一个视图并向该视图添加平移手势以向上和向下拉动。
- 应该创建一个新的 window 并将底部 sheet 添加为子视图并推送 window.
如果,我选择第二个选项我将如何在 pan 上更新 window?
您不应创建新的 UIWindow
。通常一个 iOS 应用只有 1 个 window。我看到的两个最佳选择是:
您可以添加子视图和手势识别器来实现拉动。这意味着所有逻辑可能都在父
UIViewController
中。如果没有太多的逻辑,并且sheet不必重复使用,这是一个不错的选择。如果sheet里面有更多的逻辑,或者sheet有可重复使用的,那么最好单独创建一个
UIViewController
这个。然后,您可以使用自定义动画和演示控制器来展示它。为此查看UIViewControllerAnimatedTransitioning
和UIPresentationController
。
我以前用过第二个选项。 UIPresentationController
负责将 sheet 视图定位在屏幕底部。它还使背景变暗,并附加手势识别器来处理拉动和解雇。
您可以使用本教程开始使用 UIPresentationController
。您还可以从那里获取代码并根据您的需要进行调整:https://www.raywenderlich.com/915-uipresentationcontroller-tutorial-getting-started