如何给 CAGradientLayer "locations"
How to give "locations" to CAGradientLayer
我创建了 CAGradientLayer
三种颜色,我需要给每种颜色不同的位置。
示例:
Red = 0 to 50 %
Yellow = 51 to 80 %
Green = 81 to 100 %
我试过给 startPoint
和 endPoint
但没用。
如果将以下代码放入 Playground 中,您将获得所需的确切输出:
let view = UIView(frame: CGRectMake(0,0,200,100))
let layer = CAGradientLayer()
layer.frame = view.frame
layer.colors = [UIColor.greenColor().CGColor, UIColor.yellowColor().CGColor, UIColor.redColor().CGColor]
layer.locations = [0.0, 0.8, 1.0]
view.layer.addSublayer(layer)
XCPShowView("ident", view: view)
输出:
您只需将颜色定义为一个 CGColors
数组和一个大小相同的 NSNumber
数组,每个数组都在 0.0 和 1.0 之间。
不要为此使用 startPoint
和 endPoint
- 它们用于定义渐变在图层中显示的位置 - 它与百分比和颜色没有任何关系等等
较新的 Swift3 版本代码:
let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
let layer = CAGradientLayer()
layer.frame = view.frame
layer.colors = [UIColor.green.cgColor, UIColor.yellow.cgColor, UIColor.red.cgColor]
layer.locations = [0.0, 0.8, 1.0]
view.layer.addSublayer(layer)
PlaygroundPage.current.liveView = view
我创建了 CAGradientLayer
三种颜色,我需要给每种颜色不同的位置。
示例:
Red = 0 to 50 %
Yellow = 51 to 80 %
Green = 81 to 100 %
我试过给 startPoint
和 endPoint
但没用。
如果将以下代码放入 Playground 中,您将获得所需的确切输出:
let view = UIView(frame: CGRectMake(0,0,200,100))
let layer = CAGradientLayer()
layer.frame = view.frame
layer.colors = [UIColor.greenColor().CGColor, UIColor.yellowColor().CGColor, UIColor.redColor().CGColor]
layer.locations = [0.0, 0.8, 1.0]
view.layer.addSublayer(layer)
XCPShowView("ident", view: view)
输出:
您只需将颜色定义为一个 CGColors
数组和一个大小相同的 NSNumber
数组,每个数组都在 0.0 和 1.0 之间。
不要为此使用 startPoint
和 endPoint
- 它们用于定义渐变在图层中显示的位置 - 它与百分比和颜色没有任何关系等等
较新的 Swift3 版本代码:
let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
let layer = CAGradientLayer()
layer.frame = view.frame
layer.colors = [UIColor.green.cgColor, UIColor.yellow.cgColor, UIColor.red.cgColor]
layer.locations = [0.0, 0.8, 1.0]
view.layer.addSublayer(layer)
PlaygroundPage.current.liveView = view