ShowcaseKit
什么是展示实例?
名词:表示对一个项目给予关注和好评的展示场所
这是一种在应用中轻松嵌入视图控制器,以展示您已完成的内容的方式。
您可以展示带有示例数据的简单视图,也可以展示完整的流程。一切都取决于您。
总体思路是能够在外部整个功能完成之前展示您正在作的某项工作,这样您仍然可以将它合并到主分支上 - 这就是我们所说的真正的持续集成。
要求
- iOS 8.0+
- Xcode 9.0+
- Swift 4.1+
安装
CocoaPods
在您的 Podfile
中添加以下内容:
pod "ShowcaseKit"
Swift Package.Manager
使用 Xcode 11 和 SPM 集成在 https://github.com/heetch/ShowcaseKit
中。
使用方法
创建新的 Showcases
您需要创建一个符合 Showcase
协议的新类。唯一必须实现的接口是 makeViewController()
。
final class MyAwesomeFeatureShowcase : Showcase {
func makeViewController() {
// Setup any kind of view controller here and return it
}
}
展示浏览器
展示套件 内置了一个实用的准备就绪的展示浏览器,让您能够轻松地对展示进行排序。您可以将此浏览器作为模态窗口显示在单个行中。
ShowcasesViewController.present(over: self)
或者,您可以简单地进行初始化,以按您想要的方式嵌入(在现有的导航控制器或标签栏控制器中)
let browser = ShowcasesViewController(showcases: .all)
ShowcasesViewController
必须在某个时刻位于 UINavigationController
中,因为需要执行代码 push
其他控制器。
可选覆盖
您可以覆盖 3 个默认展示属性。
标题
static var title: String { get }
默认情况下,标题是通过Showcase
类名推断出来的,通过添加Showcase
后缀并将驼峰式字符串转换为首字母大写字符串。
MyAwesomeFeatureShowcase → My Awesome Feature
但是您可以在展示中覆盖这个名称。
final class MyAwesomeFeatureShowcase : Showcase {
static let title = "My Awesome Feature (empty state)"
func makeViewController() {...}
}
路径
static var path: ShowcasePath { get }
默认情况下,展示都添加到了浏览器的根目录,在一个未命名的部分。但是,您可以使用以下代码来自定义。
static let path = ShowcasePath.root
.underSection(named: "Sign Up")
.inFolder(named: "Onboarding")
在这里,要访问展示,我们需要进入注册
表视图部分,然后打开入门
文件夹。
展示模式
static var presentationMode: ShowcasePresentationMode { get }
默认情况下,展示会推送到当前的导航控制器。但有时您需要控制展示和关闭。因此,您可以更改presentationMode
为.modal
。但是您将不得不处理您的展示的关闭。
SwiftUI 预览
SwiftUI 预览和展示配合得非常好。您可以在开发阶段利用 SwiftUI 预览的强大功能,并在您完成时将这些预览作为展示可用,以便您的团队能(QA、产品经理等...)亲身体验。
为此,您只需使您的展示符合PreviewProvider
,并实现static var previews: some View
要求,至少调用一次preview()
。
import SwiftUI
final class MyAwesomeFeatureShowcase : Showcase, PreviewProvider {
//...
@available(iOS 13, *)
static var previews: some View {
preview()
}
}
但是,您也可以分组多个preview()
调用,以便您可以同时预览多个环境中的展示。
import SwiftUI
final class MyAwesomeFeatureShowcase : Showcase, PreviewProvider {
//...
@available(iOS 13, *)
static var previews: some View {
Group {
preview(on: "iPhone SE")
preview(on: "iPhone X")
preview(on: "iPhone X").environment(\.colorScheme, .dark)
}
}
}
许可协议
本框架提供于MIT许可协议下。