2017-07-27 2 views
23
let startingColorOfGradient = UIColor(colorLiteralRed: 255/255, green: 
255/255, blue: 255/255, alpha: 1.0).cgColor 
let endingColorOFGradient = UIColor(colorLiteralRed: 251/255, green: 
247/255, blue: 234/255, alpha: 1.0).cgColor 
let gradient: CAGradientLayer = CAGradientLayer() 

Erreur:init (colorLiteralRed: vert, bleu,::, alpha :) dépréciée à Swift 4

'init(colorLiteralRed:green:blue:alpha:)' was obsoleted in Swift 4.0 (Swift._ExpressibleByColorLiteral)

Comment puis-je utiliser la couleur gradient si init(colorLiteralRed:,green:,blue:,alpha:) est dépréciée à Swift 4?

Répondre

34

init(colorLiteralRed:green:blue:alpha:) est destiné à être utilisé avec des littéraux couleur gérés par des outils de développement. Pourquoi n'utilisez-vous pas la norme init(red:green:blue:alpha:)?

Pourquoi n'utilisez-vous pas init(red:green:blue:alpha:)?

let startingColorOfGradient = UIColor(red: 255.0/255.0, green: 
    255.0/255.0, blue: 255.0/255.0, alpha: 1.0).cgColor 
let endingColorOFGradient = UIColor(red: 251.0/255.0, green: 
    247.0/255.0, blue: 234.0/255.0, alpha: 1.0).cgColor 
let gradient: CAGradientLayer = CAGradientLayer() 

(écriture comme 234.0/255.0 n'est pas obligatoire, dans le contexte comme ci-dessus à Swift. Mais il empêche le compilateur Swift d'interpréter 234/255 comme une division entière dans d'autres contextes.)

4

Vous pouvez simplement utiliser ci-dessous la méthode de classe UIColor instancier couleur Rouge, vert, Bleu, Alpha

note: Rouge, vert, Bleu et Alpha ont une valeur allant de 0 à1

let colorStart = UIColor(red:0.1 , green: 0.2, blue: 0.5, alpha: 1.0) 
let colorEnd = UIColor(red:0.21 , green: 0.32, blue: 0.15, alpha: 1.0) 

func createGradientLayer() { 
    gradientLayer = CAGradientLayer() 
    gradientLayer.frame = self.view.bounds 
    gradientLayer.colors = [colorStart.CGColor, colorEnd.CGColor] 
    self.view.layer.addSublayer(gradientLayer) 
} 

Pour créer la couche gradient vous pouvez prendre référence de

https://www.appcoda.com/cagradientlayer/

2

Une autre façon: https://developer.apple.com/documentation/uikit/uicolor/1621925-init

init(displayP3Red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)

Initializes and returns a color object using the specified opacity and RGB component values in the Display P3 color space.

vous pouvez utiliser displayP3Red au lieu de colorLiteralRed

let startingColorOfGradient = UIColor(displayP3Red: 255/255, green: 255/255, blue: 255/255, alpha: 1.0).cgColor 
let endingColorOFGradient = UIColor(displayP3Red: 251/255, green: 247/255, blue: 234/255, alpha: 1.0).cgColor 
let gradient: CAGradientLayer = CAGradientLayer() 
0

vous pouvez utiliser

UIColor(red: CGFloat(255.0), green: CGFloat(255.0), blue: CGFloat(255.0), alpha: CGFloat(255.0))