Y—Bottom Sheet
一个易于使用的 iOS 底部表单控制器。

该框架提供了一个底部表单视图控制器,可以初始化来托管任何视图或视图控制器。

Bottom Sheet demo animation

许可

Y—BottomSheet 使用 Apache 2.0 许可证

文档

文档由源代码注释自动生成,并作为静态网站托管在 GitHub Pages 上:https://yml-org.github.io/ybottomsheet-ios/

使用方法

初始化器

底部表单控制器可以使用标题和视图,或者使用视图控制器进行初始化。

使用视图控制器初始化时,标题从 UIViewController.title 中获取。当视图控制器是 UINavigationController 时,标题栏外观选项将被忽略,导航控制器的导航栏将显示为表单的标题。在这种情况下,如果您希望显示关闭按钮,则应使用视图控制器的 navigationItem.rightBarButtonItem.leftBarButtonItem 进行设置。

两种初始化器都包含一个外观参数,允许您完全自定义表单的外观。您也可以随时更新表单的外观。

简单用例 1:传递标题和视图

import YBottomSheet

final class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        showBottomSheet()
    }
    
    func showBottomSheet() {
        let yourView = UIView() 
        let sheet = BottomSheetController(
            title: "Title",
            childView: yourView
        )
        present(sheet, animated: true)
    }
}

简单用例 2:传递视图控制器。

import YBottomSheet

final class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        showBottomSheet()
    }
    
    func showBottomSheet() {
        let yourViewController = UIViewController() 
        let sheet = BottomSheetController(
            childController: yourViewController
        )
        present(sheet, animated: true)
    }
}

自定义

BottomSheetController 具有类型为 Appearanceappearance 属性。

Appearance 允许您自定义底部表单的外观和行为。您可以自定义:

更新或自定义外观

// Declare a resizable sheet.
let sheet = BottomSheetController(
    childController: yourViewController,
    appearance: .defaultResizable
)

// Change corner radius, remove dimmer,
// and use a shadow instead.
sheet.appearance.layout.cornerRadius = 24
sheet.appearance.dimmerColor = nil
sheet.appearance.elevation = Elevation(
    xOffset: 0,
    yOffset: 4,
    blur: 16,
    spread: 0,
    color: .black,
    opacity: 0.4
)
sheet.appearance.presentAnimation = Animation(
    duration: 0.4, 
    curve: .spring(damping: 0.6, velocity: 0.4)
)

// Present the sheet with a spring animation.
present(sheet, animated: true)

依赖项

Y—BottomSheet 依赖于我们的 Y—CoreUIY—MatterType 框架(两者也是开源的,并使用 Apache 2.0 许可证)。

安装

您可以通过将 Y—BottomSheet 添加为包依赖项来将其添加到 Xcode 项目中。

  1. 文件菜单中,选择添加包...
  2. 在包存储库 URL 文本字段中输入“https://github.com/yml-org/ybottomsheet-ios
  3. 单击添加包

贡献 Y—BottomSheet

要求

SwiftLint (代码检查工具)

brew install swiftlint

Jazzy (文档生成工具)

sudo gem install jazzy

设置

克隆存储库并在 Xcode 中打开 Package.swift

版本控制策略

我们采用 语义版本控制

{major}.{minor}.{patch}

例如

1.0.5

分支策略

我们为我们的框架使用简化的分支策略。

分支命名约定

feature/{ticket-number}-{short-description}
bugfix/{ticket-number}-{short-description}

例如

feature/CM-44-button
bugfix/CM-236-textview-color

拉取请求

在提交拉取请求之前,您应该:

  1. 编译并确保没有警告和错误。
  2. 运行所有单元测试并确认一切通过。
  3. 检查单元测试覆盖率,并确认所有新的/修改的代码都已完全覆盖。
  4. 从命令行运行 swiftlint 并确认没有违规。
  5. 从命令行运行 jazzy 并确认您拥有 100% 的文档覆盖率。
  6. 考虑使用 git rebase -i HEAD~{commit-count} 将您的最后 {commit-count} 个提交合并到功能块中。
  7. 如果自您创建分支以来,父分支(通常是 main)的 HEAD 已更新,请使用 git rebase main 来重新设置您的分支。
    • 永远不要将父分支合并到您的分支中。
    • 始终根据父分支重新设置您的分支。

提交拉取请求时

合并拉取请求时

发布新版本

生成文档 (通过 Jazzy)

您可以使用以下来自 Terminal 的命令,直接从源代码生成您自己的本地文档集

jazzy

这将在 /docs 下生成一组文档。默认配置在默认配置文件 .jazzy.yaml 文件中设置。

要查看其他文档选项,请输入

jazzy --help

每次将提交推送到 main 时,GitHub Action 会自动运行 Jazzy 来为我们的 GitHub 页面生成文档:https://yml-org.github.io/ybottomsheet-ios/