有关设计细节,请阅读 在 swift result builders 中进行遍历
GradientBuilder 现已通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile:
pod 'GradientBuilder'
GradientBuilder 使用 Swift 包管理器发布,您可以在 、
和
获取更多信息。
- 文件 > Swift 包 > 添加包依赖...
- 选择您想添加 GradientBuilder 的项目
- 粘贴仓库 https://github.com/chenhaiteng/GradientBuilder.git
- 规则 > 版本:至下一个主要版本 1.0.0。也可以应用规则 > 分支:main 来访问最新的代码。
注意:可能需要手动将 GradientBuilder 连接到您的目标。
- 通过轻按项目导航器的根来打开 项目编辑器
- 选择您想使用 GradientBuilder 的目标。
- 选择 构建阶段,然后展开 与库链接二进制文件
- 轻按 + 按钮,然后选择 GradientBuilder 来添加它。
dependencies: [
.package(name: "GradientBuilder", url: " https://github.com/chenhaiteng/GradientBuilder.git", from: "1.0.0")
// To specify branch, use following statement to instead of.
// .package(name: "GradientBuilder", url: " https://github.com/chenhaiteng/GradientBuilder.git", .branch("branch_name"))
],
targets: [
.target(
name: "MyPackage",
dependencies: ["GradientBuilder"]),
]
- 应用于函数
// Create a Gradient, then inject it into specified gradient shape.
@GradientBuilder
func builder() -> Gradient {
Color.red
Color.blue
Color.yellow
}
let g = builder()
let angularGradient = AngularGradient(gradient: g, center: .center)
// Or create gradient shape directly
@GradientBuilder
func angularBuilder() -> AngularGradient {
Color.red
Color.blue
Color.yellow
}
let angular = angularBuilder()
- 应用于函数声明中的参数
func createGradient(@GradientBuilder builder: ()->Gradient) -> Gradient {
return builder()
}
let g = createGradient {
Color.red
Color.blue
Color.yellow
}
- 应用于变量或索引
enum GrayGradient {
@GradientBuilder static subscript(_ degree: Int) -> LinearGradient {
if degree > 0 {
for i in 0..<degree {
Color.white.opacity(Double(i)/Double(degree))
}
} else {
Color.white
}
}
}
let gray_g = GrayGradient[3]
- 支持不同的输入类型
let g = createGradient {
(1.0, 1.0, 1.0, 0.5) //RGBA with float, value from 0.0 to 1.0
(255, 255, 255, 210) //RGBA8888 format, vlaue from 0 to 255
Color.white // Color
}
let g_stop = createGradient {
Gradient.Stop(color: .red, location: 0.2)
(Color.blue, 0.5)
(.green, 0.7)
}
注意,不允许将 Color 与 Stop 混合
let g = createGradient {
(1.0, 1.0, 1.0, 0.5) //RGBA with float, value from 0.0 to 1.0
(255, 255, 255, 210) //RGBA8888 format, vlaue from 0 to 255
(.green, 0.7) // Invalid!!! show ambiguous error!!!!
}