2016-09-29 47 views
0

我試圖在UIView或帶有兩種顏色黑色的淡黃色按鈕(請參閱圖像)上使用漸變顏色。UIView在iOS 10中的漸變色效果Swift 2.3 Xcode 8

我試過使用不同的白色,清晰的顏色組合;也嘗試使用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 

所需的結果是其中黑色過渡到褪色的結果。

我已經嘗試將兩種顏色設置爲黑色,並將顏色1設置爲alpha。 我已經試過評論locations屬性。 desired resultsenter image description here

回答

0

您應該在viewDidLayoutSubviews()中設置gradientLayer.frame。

像這樣:

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 
}