GradientBuilder 1.1.1

GradientBuilder 1.1.1

Chen-Hai Teng 管理。



  • Chen-Hai Teng

GradientBuilder

有关设计细节,请阅读 在 swift result builders 中进行遍历

安装

CocoaPods

GradientBuilder 现已通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile:

pod 'GradientBuilder'

Swift 包管理器

GradientBuilder 使用 Swift 包管理器发布,您可以在 Swift Package Manager(GitHub)Package Manager(swift.org)Swift Packages(Apple) 获取更多信息。

- 添加到 Xcode(要在此包的应用程序中使用它)

  1. 文件 > Swift 包 > 添加包依赖...
  2. 选择您想添加 GradientBuilder 的项目
  3. 粘贴仓库 https://github.com/chenhaiteng/GradientBuilder.git
  4. 规则 > 版本:至下一个主要版本 1.0.0。也可以应用规则 > 分支:main 来访问最新的代码。

注意:可能需要手动将 GradientBuilder 连接到您的目标。

  1. 通过轻按项目导航器的根来打开 项目编辑器
  2. 选择您想使用 GradientBuilder 的目标。
  3. 选择 构建阶段,然后展开 与库链接二进制文件
  4. 轻按 + 按钮,然后选择 GradientBuilder 来添加它。

- 添加到 SPM 包(要在此库/框架中使用此包)

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"]),
]

如何使用

  1. 应用于函数
// 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()
  1. 应用于函数声明中的参数
func createGradient(@GradientBuilder builder: ()->Gradient) -> Gradient {
    return builder()
}

let g = createGradient {
    Color.red
    Color.blue
    Color.yellow
}
  1. 应用于变量或索引
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]
  1. 支持不同的输入类型
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!!!!
}