特性 | |
---|---|
支持 Apple Maps 的底栏行为 | |
支持使用 UIScrollView 和 UIView 滑动 | |
允许添加可调节的背景视图 | |
将底栏内容设置为 UIViewController 或 UINavigationController | |
使用 UINavigationController 在底栏中进行导航 | |
添加一个或多个底栏停止位置 | |
程序化更改底栏位置 | |
显示任意数量的底栏 | |
同时或单独移动多个底栏 | |
弹性效果 | |
从底部消失 |
演示
Apple Maps 与子项 | 底栏内导航 | 拉动以消失 | 多个底栏位置 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
示例
要运行示例项目,请克隆仓库,然后首先从示例目录运行 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 通过CocoaPods和Swift 包管理器提供。
CocoaPods
将以下行添加到您的 Podfile 中
pod 'UBottomSheet'
SPM
在 XCode > 文件 > Swift 包 > 添加包依赖中添加此_URL
https://github.com/OfTheWolf/UBottomSheet
另请参阅
TwitterProfile Twitter Profile 屏幕的嵌套滚动视图行为。
作者
uğur, [email protected]
授权协议
UBottomSheet 遵循 MIT 授权协议。更多信息请参阅 LICENSE 文件。