2016-09-29 2 views
0

Я пытаюсь добиться цвета градиента на UIView или кнопке с двумя цветными черными, которые исчезают, чтобы очистить цвет или белый цвет (см. Изображение).Эффект цвета градиента на UIView в iOS 10 Swift 2.3 Xcode 8

Я пробовал использовать различные комбинации белого цвета, прозрачного цвета; экспериментируя с альфой. Я также установил свойство 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 с альфой. Я уже пробовал комментировать locations. desired resultsenter image description here

ответ

0

Вы должны установить gradientLayer.frame в viewDidLayoutSubviews().

Как это:

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 
} 
Смежные вопросы