底部抽屉

底部抽屉组件旨在处理任何内容,包括滚动内容。

外观

适应内容大小 交互式关闭
adapt-to-content-size interactive-dismissal

底部抽屉内的 NavigationController

Push 和 Pop 过渡 交互式 Pop 过渡
system-push-pop interactive-pop

安装

Swift Package Manager

要使用 Swift Package Manager 将 Bottom Sheet 集成到您的 Xcode 项目中,请将其添加到您的 Package.swift 的 dependencies 值中

dependencies: [
    .package(url: "https://github.com/joomcode/BottomSheet", from: "2.0.0")
]

CocoaPods

CocoaPods 是 Cocoa 项目的依赖项管理器。 您可以使用以下命令安装它

$ bundle install

要使用 CocoaPods 将 BottomSheet 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它

source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!

target '<Your Target Name>' do
    pod 'BottomSheet', :git => 'https://github.com/joomcode/BottomSheet'
end

开始使用

此仓库包含演示,它可以成为理解底部抽屉使用的良好开端,但以下是一些简单的步骤可供参考

  1. 创建要显示的 UIViewController,并通过 preferredContentSize 属性设置内容的大小
  2. (可选)如果您的视图控制器是基于列表的,请遵循 ScrollableBottomSheetPresentedController
  3. 使用 presentBottomSheet(viewController:configuration:) 显示

如果您想构建流程,请使用 BottomSheetNavigationController

presentBottomSheetInsideNavigationController(
    viewController: viewControllerToPresent,
    configuration: .default
)

您可以通过传递 configuration 参数来自定义外观

presentBottomSheet(
    viewController: viewControllerToPresent,
    configuration: BottomSheetConfiguration(
        cornerRadius: 10,
        pullBarConfiguration: .visible(.init(height: 20)),
        shadowConfiguration: .init(backgroundColor: UIColor.black.withAlphaComponent(0.6))
    ),
    canBeDismissed: {
        // return `true` or `false` based on your business logic
        true
    },
    dismissCompletion: {
        // handle bottom sheet dismissal completion
    }
)

资源

阅读 Medium 上的文章,以便更好地了解其内部工作原理