如何在 PaintCode 和 Xcode 中使用颜色变量

cmi*_*mii 4 instance-variables uicolor paintcode swift

我有一个通过 PaintCode 绘制的图标。我需要以编程方式在 XCode 中更改他的颜色。

在 PaintCode 上,我为描边颜色设置了一个变量“ChevronColor”。

在此处输入图片说明

在此处输入图片说明

现在我有:

@IBDesignable

class IconClass: UIView {

    override func draw(_ rect: CGRect) {
        StyleKit.drawIcon(frame: self.bounds, resizing: .aspectFit)
    }
}
Run Code Online (Sandbox Code Playgroud)

但我想添加这种类型,以便能够设置图标的颜色。

 @IBInspectable
     var ChevronColor : UIColor {
         didSet (newColor) {
             setNeedsDisplay()
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道怎么办。

导出 StyleKit 文件后,我在 stylekit 文件中排除了此方法,但事实并非如此:

StyleKit.drawIcon(frame:  self.bounds, resizing: .aspectFit, chevronColor: self.ChevronColor)
Run Code Online (Sandbox Code Playgroud)

bac*_*h-f 6

TL/DR

创建一个采用red, green, blue, alphaexternal parameters在 PaintCode 中)并生成颜色(makeColor在 PaintCode 中的函数)的表达式。然后通过该表达式将生成的颜色分配给Stroke,Fill等。

油漆代码

油漆代码

自定义视图

import Foundation
import UIKit

@IBDesignable class TreeView: UIView {

    /*
     *
     * Notice - supported range for colors and alpha: 0 to 1.
     * Color 0.808, 0.808, 0.808 = gray (starting color in this example).
     *
    */

    @IBInspectable var redColor: CGFloat = 0.808 {
        didSet {
            setNeedsDisplay()
        }
    }

    @IBInspectable var greenColor: CGFloat = 0.808 {
        didSet {
            setNeedsDisplay()
        }
    }

    @IBInspectable var blueColor: CGFloat = 0.808 {
        didSet {
            setNeedsDisplay()
        }
    }

    @IBInspectable var alphaColor: CGFloat = 1 {
        didSet {
            setNeedsDisplay()
        }
    }

    override func draw(_ rect: CGRect) {
        StyleKit.drawTreeIcon(frame: rect,
                              resizing: .aspectFit,
                              red: redColor,
                              green: greenColor,
                              blue: blueColor,
                              alpha: alphaColor)
    }
}
Run Code Online (Sandbox Code Playgroud)

更改颜色示例

@IBAction func colorButtonPressed(_ sender: UIButton) {
    // Get color references.
    let red = CIColor(color: sender.backgroundColor!).red
    let green = CIColor(color: sender.backgroundColor!).green
    let blue = CIColor(color: sender.backgroundColor!).blue
    let alpha = CIColor(color: sender.backgroundColor!).alpha

    // Update the PaintCode generated icon.
    treeView.redColor = red
    treeView.greenColor = green
    treeView.blueColor = blue
    treeView.alpha = alpha
}
Run Code Online (Sandbox Code Playgroud)

演示

例子

参考

该项目可以从我的 GitHub 存储库中克隆。

另请查看PaintCode 表达式语言指南。


小智 5

在此处输入图片说明

只需将颜色部分访问级别中的颜色编辑为Parameter.