0

我试图在一个UIView或按钮上实现渐变色,两种颜色的黑色淡出以清除颜色或白色(请参见图片)。

我尝试过使用白色、透明色的不同组合;也尝试使用 alpha。我还设置了locations属性,如下面的代码所示,但我无法达到预期的结果。

谁能告诉我我错在哪里。:)

       let colorClear = UIColor.clearColor().CGColor
    let colorLeft =  UIColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 0.9).CGColor
    let colorRight = UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0).CGColor

    let gradientLayer = CAGradientLayer()
    gradientLayer.colors = [colorLeft, colorRight]
    gradientLayer.locations = [ 0.1, 0.9]
    gradientLayer.frame = self.createAccountView.bounds
    gradientLayer.startPoint = CGPoint(x:0.0, y:0.5)
    gradientLayer.endPoint = CGPoint(x:1.0, y:0.5)
    createAccountView.layer.addSublayer(gradientLayer)
    createAccountView.layer.masksToBounds = true

所需的结果是黑色过渡到褪色的结果。

我已经尝试将两种颜色设置为黑色和带有 alpha 的 color1。我已经尝试过评论locations属性。 期望的结果在此处输入图像描述

4

1 回答 1

0

you should set gradientLayer.frame in viewDidLayoutSubviews().

Like this:

class ViewController: UIViewController {

    let gradientLayer = CAGradientLayer()

    override func viewDidLoad() {
    let colorClear = UIColor.clearColor().CGColor
let colorLeft =  UIColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 0.9).CGColor
let colorRight = UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0).CGColor

    self.gradientLayer.colors = [colorLeft, colorRight]
    self.gradientLayer.locations = [ 0.1, 0.9]
    self.gradientLayer.startPoint = CGPoint(x:0.0, y:0.5)
    self.gradientLayer.endPoint = CGPoint(x:1.0, y:0.5)
    createAccountView.layer.addSublayer(self.gradientLayer)
    createAccountView.layer.masksToBounds = true
}

override viewDidLayoutSubviews() {
    super.viewDidLayoutSubViews()
    self.gradientLayer.frame = self.createAccountView.bounds
}
于 2016-09-29T08:06:41.023 回答