SwiftyOnboard
一个简单的 iOS 框架,允许开发者为应用程序创建引导流程。
SwiftyOnboard 使将引导流程添加到任何 iOS 应用程序变得简单。SwiftyOnboard 处理视图分页的所有逻辑,允许您快速地快速添加高度可定制的引导到您的应用程序,全部都在一个轻量级框架中。
内容
需求
- iOS 12.0+
- Xcode 10.3+
安装
CocoaPods
您可以使用CocoaPods通过在您的Podfile
中添加以下内容来安装SwiftyOnboard
:
use_frameworks!
pod 'SwiftyOnboard'
如果在运行了pod install
后出现Unable to find a specification for `SwiftyOnboard`.
错误。
在您的项目目录中运行以下命令
pod repo update
pod install
Carthage
要通过Carthage安装,请将以下内容添加到您的Cartfile中
github "juanpablofernandez/SwiftyOnboard"
手动
- 将
SwiftyOnboard.swift
、SwiftyOnboardOverlay.swift
和SwiftyOnboardPage.swift
拖放到您的项目中。 - 就这样
用法
- 将
SwiftyOnboard
模块导入到您的ViewController
类中
import SwiftyOnboard
- 将
SwiftyOnboard
添加到ViewController
,然后为它设置dataSource和delegate
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let swiftyOnboard = SwiftyOnboard(frame: view.frame)
view.addSubview(swiftyOnboard)
swiftyOnboard.dataSource = self
}
}
- 使您的
ViewController
遵循SwiftyOnboardDataSource
协议并实现所有方法,例如
extension ViewController: SwiftyOnboardDataSource {
func swiftyOnboardNumberOfPages(swiftyOnboard: SwiftyOnboard) -> Int {
return 3
}
func swiftyOnboardPageForIndex(swiftyOnboard: SwiftyOnboard, index: Int) -> SwiftyOnboardPage? {
let page = SwiftyOnboardPage()
return page
}
}
SwiftyOnboard
具有默认实现。您可以重写它来自定义其行为
属性
SwiftyOnboard有以下属性
public var dataSource: SwiftyOnboardDataSource?
支持SwiftyOnboardDataSource协议的对象,可以向SwiftyOnboard提供视图来填充它。
public var delegate: SwiftyOnboardDelegate?
支持SwiftyOnboardDelegate协议的对象,可以响应SwiftyOnboard事件。
public var shouldSwipe: Bool
是否启用滑动操作[默认=true]。
public var fadePages: Bool
页面转换时是否启用淡入淡出效果[默认=true]。
方法
SwiftyOnboard类有以下方法
func goToPage(index: Int, animated: Bool)
此方法允许你切换到引导过程中的特定页面。
协议
SwiftyOnboard遵循Apple的数据驱动视图惯例,通过提供两个协议接口SwiftyOnboardDataSource和SwiftyOnboardDelegate。
SwiftyOnboardDataSource
SwiftyOnboardDataSource协议有以下方法
func swiftyOnboardNumberOfPages(swiftyOnboard: SwiftyOnboard) -> Int
返回引导过程中页面(项)的数量。
func swiftyOnboardViewForBackground(swiftyOnboard: SwiftyOnboard) -> UIView?
返回用于显示为引导过程背景的视图。
func swiftyOnboardPageForIndex(swiftyOnboard: SwiftyOnboard, index: Int) -> SwiftyOnboardPage?
返回在引导过程中指定索引处显示的视图(页面)。
func swiftyOnboardViewForOverlay(swiftyOnboard: SwiftyOnboard) -> SwiftyOnboardOverlay?
返回显示在引导过程页面之上的覆盖(视图),例如[不随页面移动的“继续”和“跳过”按钮,还包括页面控制条]
func swiftyOnboardOverlayForPosition(swiftyOnboard: SwiftyOnboard, overlay: SwiftyOnboardOverlay, for position: Double)
编辑所需位置的覆盖(视图)。例如[当达到最后一页时,将“继续按钮”文本更改为“完成”]
func swiftyOnboardBackgroundColorFor(_ swiftyOnboard: SwiftyOnboard, atIndex index: Int) -> UIColor?
设置给定索引页面的背景颜色。(当你有不同背景颜色的页面时非常有用)
SwiftyOnboardDelegate
SwiftyOnboardDelegate协议有以下方法
func swiftyOnboard(swiftyOnboard: SwiftyOnboard, currentPage index: Int)
每当页面显示时,都会调用此方法,它包含了该页面的索引。无论页面是通过代码还是用户交互显示的,都会调用此方法。
func swiftyOnboard(swiftyOnboard: SwiftyOnboard, leftEdge position: Double)
每当页面滚动时,都会调用此方法,它包含了屏幕左侧和第一个页面左侧之间的当前距离。
func swiftyOnboard(swiftyOnboard: SwiftyOnboard, tapped index: Int)
每当页面被用户轻触时,都会调用此方法,它包含了被轻触的页面的索引。
注释
- 不支持横版模式
贡献
欢迎贡献力量!但在贡献时,您必须遵循某些指南
- 编写有描述性的提交信息。
- 为每个功能创建一个拉取请求(不要创建一个添加了3个新功能的拉取请求。为每个功能创建一个独立的拉取请求,并附上描述性信息)。
- 不要更新示例项目或任何其他无关文件。
我想看到您的卓越入站体验。截图并/or 记录一个gif并发送给我的邮箱!
许可
根据MIT许可证发布。更多信息请见 LICENSE
。