How to give “locations” to CAGradientLayer

后端 未结 1 1811
陌清茗
陌清茗 2021-02-04 05:08

I have created CAGradientLayer having three colors, i need to give each color different locations. Example:

Red = 0 to 50 %
Yellow = 51 to 80 %
Gree         


        
1条回答
  •  夕颜
    夕颜 (楼主)
    2021-02-04 05:40

    If you put the following code into a Playground you will get the exact desired output:

    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)
    

    Outputting:

    You simply define the colors as an array of CGColors, and an array of the same size of NSNumbers each between 0.0 and 1.0.

    Dont use startPoint and endPoint for that - they are for defining from where to where the gradient is shown in the layer - it does not have anything to do with the percents and the colors etc.


    More recent Swift3 version of the code:

    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
    

    0 讨论(0)
提交回复
热议问题