CTXTutorialEngine
CTXTutorialEngine 是一个库,提供了在应用程序中显示提示或教程的功能,以帮助用户上手。
特性
- 引擎可以读取教程设置的配置文件,或者您可以手动添加教程到引擎中。
- 可以添加一系列自定义事件,这些事件将被引擎处理以触发教程。
- 可以设置视图层次结构的轮询间隔。
- 可以处理形状图层和带角的视图。
- 自动存储显示过的教程状态,并提供重置所有显示过的教程状态的能力。
- 将触摸事件转发到提示的视图中。
- 可以显示自定义的提示视图。
要求
- iOS 11.0+
- Xcode 10.0+
安装
CocoaPods
platform :ios, '11.0'
use_frameworks!
pod 'CTXTutorialEngine', '~> 3.0.0'
Carthage
在您的 Cartfile
中添加:
github "andymedvedev/CTXTutorialEngine" ~> 3.0.0
Swift 包管理器
dependencies: [
.package(url: "https://github.com/andymedvedev/CTXTutorialEngine.git", .upToNextMajor(from: "3.0.0")))
]
不要忘记执行 import CTXTutorialEngine
快速开始
您想要为某些 UIView
显示提示视图。
- 将以下代码添加到
AppDelegate
的application(_:didFinishLaunchingWithOptions:)
中:
CTXTutorialEngine.shared.addTutorials { error in
if let error = error {
//handle error
}
}
CTXTutorialEngine.shared.start()
- 将
CTXTutorialConfig.json
添加到项目中,内容如下:
{
"tutorials": [
{
"id": "0",
"name": "My view tutorial",
"events": [
{
"CTXTutorialViewsShownEvent": {
"event": {
"steps": [
{
"text": "Hello world!",
"accessibilityIdentifier": "myView"
}
]
}
}
}
]
}
]
}
您的 ViewController
代码应如下所示:
import CTXTutorialEngine
class ViewController: CTXTutorialViewController {
private let myView: UIView = ...
private let engine = CTXTutorialEngine.shared
override func viewDidLoad() {
super.viewDidLoad()
myView.accessibilityIdentifier = "myView"
view.addSubview(myView)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
engine.observe(self, contentType: .dynamic)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
engine.unobserve(self)
}
}
- 默认的提示视图将显示,它将是纯白色带有黑色文本和灰色按钮,但如果您想更改外观,您应设置
CTXTutorialEngine.shared.appearance
的参数。您可以在应用启动时或在每个教程步骤中通过让您的ViewController
符合CTXTutorialEngineDelegate
来实现这一点
extension ViewController: CTXTutorialEngineDelegate {
func engineWillShowTutorialStep(_ engine: CTXTutorialEngine, tutorial: CTXTutorial, with stepInfo: CTXTutorialStepPresentationInfo) {
let appearance = engine.appearance
...
}
}
并且不要忘记在 viewDidAppear(_:)
中设置 engine.delegate = self
高级设置
待办事项
贡献
我们非常感谢您对 CTXTutorialEngine 的贡献,更多信息请查看 LICENSE
文件。
特别感谢
Eugene Cherkasov (https://github.com/johnnie-che)
许可证
MIT 许可证。详细信息请参阅LICENSE 文件。