RoundCoachMark 1.0.2

RoundCoachMark 1.0.2

Nikolay Kapustin 维护。



RoundCoachMark

Swift 4.0+ Xcode 9.0+ iOS 10.0+ License Platform

RoundCoachMark 是一个小型的 Swift 库,用于显示以 GUI 元素为中心的动画圆形叠加层(教练标记)——用于入门或运行时帮助。

Watch the demo

RoundCoachMark 支持自定义。您可以设置颜色、字体并调整动态效果。

RoundCoachMark 的主要功能是预注册教练标记的机制——您可以在方便的时候(在出现或配置时)注册标记并忽略它。下次教练标记开始时,它将找到标记并根据情况显示它。您可以为基本的 GUI 元素(如按钮、输入字段、标签和图标)绘制标记,无论它们是静态的还是出现,例如在表格视图单元格中。

使用方法

有两种基本的教练标记场景。

简单场景

第一个场景由示例项目中的 SimpleCoachMarkerDemoVC 说明了。在这个场景中,您要显示的所有 GUI 元素(控件)都在同一个视图控制器中,因此您可以直接将它们添加到教练标记中。

视图控制器类声明

@IBOutlet weak var gearButton: UIButton!
@IBOutlet weak var exitButton: UIButton!

private var coachMarker:CoachMarker?

在某些设置方法中

coachMarker = CoachMarker(in:self.view, infoPadding:20)

coachMarker!.addMark(title:"Gear up!", info:"Tap the icon to open Settings screen.",
                     control:gearButton)
coachMarker!.addMark(title:"Get out of here!", info:"Tap this to exit",
                     control:exitButton)

有几个添加(或注册)标记的方法。请参阅示例项目以找到所有方法。

最后在 viewDidAppear 中立即开始或帮助按钮处理程序中

coachMarker?.tapPlay(autoStart:true, completion:{print("tapPlay finished")})

// or

coachMarker?.autoPlay(delay:0.5, interval:1, completion:{print("autoPlay finished")})

这两种方法都会按顺序显示所有添加的标记,然后销毁教练标记。

或者,您可以使用标志避免教练标记的销毁,并在以后重新使用它。

coachMarker?.tapPlay(autoStart:true, destroyWhenFinished:false, completion:{print("tapPlay finished")})

真实场景

第二种场景更为真实。在示例项目中,它通过 ComplexCoachMarkerDemoVC 进行说明。想象一下,你的屏幕由多个视图控制器和视图层次结构组成:根容器控制器(自定义或系统提供的,如导航控制器)、嵌入式栏/菜单控制器、一个包含要显示的CoachMarker的控制元素的子内容控制器。显然,你将在根容器控制器级别创建CoachMarker,但如何从这个级别访问控件呢?以下是方法。不是直接向CoachMarker添加标记,你将在一个保证在创建CoachMarker之前启动的方法中预先登记它。

CoachMarker.registerMark(title:"Show modal view controller",
                         info:"A modal view controller brings his owm coach marks, so other marks are to be disabled. It's done by 'unregistering' active marks in viewWillDisappear of overlapped controllers.",
                         control:showmodalButton,
                         markTag:"scenario-2")

如你所见,你可以使用 markTag: 参数来标记标记,然后它只会在具有相同标记的CoachMarker上显示。因此,你可以根据需要创建任意数量的标记。或者,你也可以取消注册标记。现在,你可以像在简单场景中一样创建标记并启动它。

coachMarker = CoachMarker(in:marksContainer, infoPadding:20, tag:"scenario-2")

...

coachMarker?.tapPlay(autoStart:true, destroyWhenFinished:false)

play方法不是唯一控制标记显示的方式。你可以自己构建标记显示的逻辑,并使用CoachMarker接口方法实现它。

public func presentMark(_ index:Int, completion:@escaping ()->Void)
public func dismissMark(completion:@escaping ()->Void)
public func presentNextMark(completion:@escaping ()->Void)

安装

CocoaPods

要使用 Cocoapods 将 RoundCoachMark 集成到你的 Xcode 项目中,请在 Podfile 中指定它。

pod 'RoundCoachMark'

许可证

RoundCoachMark 采用 MIT 许可证 发布。