Next Level

Language Version Platform License

特性
📍 Apple Maps 底部抽屉行为
支持使用 UIScrollView 和 UIView 进行拖动
🌒 允许添加可调节亮度的背景视图
📱 设置抽屉内容为 UIViewController 或 UINavigationController
📖 使用 UINavigationController 在抽屉内部导航
🌈 添加一个或多个抽屉停止位置
🎯 通过编程方式更改抽屉位置
🌀 根据需要呈现任意数量的抽屉
🚀 同时或分别移动多个抽屉
🏹 橡皮筋效果
👋 滑动到底部时关闭

演示

Apple Maps & Childs 抽屉内部导航 下拉关闭 多个抽屉位置
Tag Tag Tag Tag

示例

要运行示例项目,请克隆该仓库,并首先从 Example 目录运行 pod install

底部抽屉子视图控制器必须遵循 Draggable 协议。

class MapsDemoBottomSheetController: UIViewController, Draggable{
    @IBOutlet weak var tableView: UITableView!
      
    override func viewDidLoad() {
        super.viewDidLoad()
        if #available(iOS 11.0, *) {
            tableView.contentInsetAdjustmentBehavior = .never
        } else {
            automaticallyAdjustsScrollViewInsets = false
        }
        tableView.delegate = self
        tableView.dataSource = self
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        //adds pan gesture recognizer to draggableView()
        sheetCoordinator?.startTracking(item: self) 
    }

//  MARK: Draggable protocol implementations

    var sheetCoordinator: UBottomSheetCoordinator? 

    func draggableView() -> UIScrollView? {
        return tableView
    }
}

从主视图控制器创建一个 UBottomSheetCoordinator。使用 UBottomSheetCoordinator 添加和配置抽屉。

// parentViewController: main view controller that presents the bottom sheet
// call this within viewWillLayoutSubViews to make sure view frame has measured correctly. see example projects. 
let sheetCoordinator = UBottomSheetCoordinator(parent: parentViewController)

let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MapsDemoBottomSheetController") as! MapsDemoBottomSheetController

vc.sheetCoordinator = sheetCoordinator

sheetCoordinator.addSheet(vc, to: parentViewController)

要求

ios9.0+, Xcode10+

安装

UBottomSheet 可通过 CocoaPodsSwift Package Manager 获取。

CocoaPods

将以下行添加到您的 Podfile

pod 'UBottomSheet'

SPM

在 XCode > File > Swift Packages > Add Package Dependency 中添加此 URL

https://github.com/OfTheWolf/UBottomSheet

参见

TwitterProfile Twitter Profile 屏幕的嵌套滚动视图行为。

作者

uğur, uguboz@gmail.com

许可证

UBottomSheet 在 MIT 许可证下可用。有关更多信息,请参见 LICENSE 文件。