RoundCoachMark
RoundCoachMark 是一个小型的 Swift 库,用于显示以 GUI 元素为中心的动画圆形叠加层(教练标记)——用于入门或运行时帮助。
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 许可证 发布。