PanModal 1.2.7

PanModal 1.2.7

tosin维护。



PanModal 1.2.7

PanModal是一个优雅且高度可定制的iOS底部面板模态构建API。

Screenshot Preview

Platform: iOS 10.0+ Language: Swift 5 CocoaPods compatible Carthage compatible License: MIT

特性兼容性安装使用文档贡献作者许可证

阅读我们的博客,了解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
    }
}

调整高度

可以通过重写 shortFormHeightlongFormHeight 来自定义 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 的方法或说明以获取详细文档。

Screenshot Preview

贡献

我们很高兴开源这个库。我们在 Slack 应用程序的多个地方使用它,希望它易于使用和修改;我们已在代码中添加了详尽的文档来支持这一点。

我们只会修复关键错误,因此对于任何非关键问题或功能请求,我们希望依赖于社区使用这个库来添加他们需要的功能。有关更多信息,请阅读贡献指南

作者

Stephen SowoleTosin Afolabi

许可证

PanModal 采用 MIT 许可证发布。有关详细信息,请参阅 LICENSE 文件。