PanModal是一个优雅且高度可定制的iOS底部面板模态构建API。
特性 • 兼容性 • 安装 • 使用 • 文档 • 贡献 • 作者 • 许可证
阅读我们的博客,了解Slack如何通过PanModal获得更多
Swift 4.2支持可以在Swift4.2
分支上找到。
特性
- 支持任何类型的
UIViewController
- 模态与内容之间无缝切换
- 保持60 fps性能
兼容性
PanModal需要iOS 10+,且与Swift 4.2项目兼容。
安装
pod 'PanModal'
github "slackhq/PanModal"
dependencies: [
.package(url: "https://github.com/slackhq/PanModal.git", .exact("1.2.6")),
],
使用方法
PanModal 的设计目标就是易于使用。您只需像显示 UIViewController
一样调用 presentPanModal
即可。
.presentPanModal(yourViewController)
所显示的视图控制器必须遵循 PanModalPresentable
协议才能充分利用可自定义的选项。
extension YourViewController: PanModalPresentable {
var panScrollable: UIScrollView? {
return nil
}
}
PanScrollable
如果所显示的视图控制器中嵌入了 UIScrollView
,例如 UITableViewController
中,panModal 将无缝地在模态和滚动视图之间切换拖动手势。
class TableViewController: UITableViewController, PanModalPresentable {
var panScrollable: UIScrollView? {
return tableView
}
}
调整高度
可以通过重写 shortFormHeight
或 longFormHeight
来自定义 panModal 的高度。
var shortFormHeight: PanModalHeight {
return .contentHeight(300)
}
var longFormHeight: PanModalHeight {
return .maxHeightWithTopInset(40)
}
运行时更新
值在呈现时被存储,因此当在运行时进行调整时,您应该调用 panModalSetNeedsLayoutUpdate()
。
func viewDidLoad() {
hasLoaded = true
panModalSetNeedsLayoutUpdate()
panModalTransition(to: .shortForm)
}
var shortFormHeight: PanModalHeight {
if hasLoaded {
return .contentHeight(200)
}
return .maxHeight
}
示例应用
请查看 示例应用 了解如何对 PanModalPresentable
进行更复杂的配置,包括导航控制器和堆叠模态。
文档
按住 Option 键并点击任何 PanModal 的方法或说明以获取详细文档。
贡献
我们很高兴开源这个库。我们在 Slack 应用程序的多个地方使用它,希望它易于使用和修改;我们已在代码中添加了详尽的文档来支持这一点。
我们只会修复关键错误,因此对于任何非关键问题或功能请求,我们希望依赖于社区使用这个库来添加他们需要的功能。有关更多信息,请阅读贡献指南。
作者
Stephen Sowole • Tosin Afolabi
许可证
PanModal 采用 MIT 许可证发布。有关详细信息,请参阅 LICENSE 文件。