Cirque 1.0.3

Cirque 1.0.3

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布上次发布2018年5月
SPM支持SPM

Philip Engberg维护。



Cirque 1.0.3

  • philipengberg

cirque icon 2

Cirque

Swift Version License Platform

Cirque是一个iOS组件,可以使用它来绘制带有颜色渐变过渡的多颜色圆圈。

为什么?

CAGradientLayer目前仅支持线性渐变,而大多数解决方案仅支持两种颜色。然而,我们需要一个模块化、可配置的组件,可以处理任何数量的颜色以及任何大小。

示例

要运行示例项目,请先从仓库中克隆,然后在Example目录中首先运行pod install

首先创建一个实现CirqueDataType的数据结构(一个enum做出是有意义的),然后创建一个新的CirqueView,并用一个CirqueDataType数组的dataPoints属性设置。

let cirque = CirqueView(frame: CGRect(x: 0, y: 0, width: 110, height: 110))
cirque.dataPoints = [RankingGroup.match(value: 0.3), 
                     RankingGroup.achievements(value: 0.2), 
                     RankingGroup.votes(value: 0.2)]
view.addSubview(cirque)

Boom💥

Example

自定义

您可以通过微调来进一步自定义外观

属性 描述 默认值
transitionSize 一个介于0和1之间的Float,表示用于从一种颜色过渡到下一种颜色的圆周百分比。 0.05
stepSize 一个介于0和1之间的Float,表示每个渐变步骤应填充的transitionSize百分比。例如,值为0.1时,每个颜色步骤是transitionSize的10%,意味着总共有10个步骤。 0.1
lineWidth 一个表示圆圈描边宽度的Float 5

Expainer

工作原理

理念是尽可能多地使用普通笔触在贝塞尔弧上绘制。然后,当需要切换颜色时,绘制1/stepSize个小弧段,每个小弧段都向下一个颜色靠近一步。以下是示意图

Example

动画

我实现了一个可以动画显示圆圈进度,同时保持圆圈随其扩展而保持相对比例的工作原型。

挑战在于,为了绘制许多小的弧段,最实际的方法是直接在drawRect:中完成,这意味着没有层可以动画化。

我的工作原型支持自定义持续时间和计时函数。如果您希望在此组件中直接支持此功能,请在这个问题中提出。👍这里 问题中。

安装

Cirque可以通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中

pod "Cirque"

要求

  • Xcode 8.0
  • Swift 3.0+

作者

恩贝格先生,移动开发主管 @ Tonsser

贡献

非常欢迎贡献!

许可证

Cirque 可在 MIT 许可下使用。有关更多信息,请参阅 LICENSE 文件。