web-dev-qa-db-fra.com

init (colorLiteralRed:, green:, blue:, alpha :) obsolète dans Swift 4

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: green: blue: alpha :)' était obsolète dans Swift 4.0 (Swift._ExpressibleByColorLiteral)

Comment utiliser une couleur de dégradé si init(colorLiteralRed:,green:,blue:,alpha:) est obsolète dans Swift 4?

33
Zeus Eternal

init(colorLiteralRed:green:blue:alpha:) est destiné à être utilisé avec des littéraux de couleur gérés par des outils de développement.

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

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()

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

52
OOPer

Vous pouvez simplement utiliser la méthode ci-dessous de la classe UIColor pour instancier des couleurs à partir de rouge, vert, bleu et alpha.

Remarque: les valeurs Rouge, Vert, Bleu et Alpha ont une valeur comprise entre 0 et 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 un calque dégradé, vous pouvez vous référer à

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

4
Sudhir kumar

Une autre manière: https://developer.Apple.com/documentation/uikit/uicolor/1621925-init

init (displayP3Red: CGFloat, vert: CGFloat, bleu: CGFloat, alpha: CGFloat)

Initialise et retourne un objet de couleur en utilisant les valeurs d'opacité et de composant RVB spécifiées dans l'espace colorimétrique Display P3.

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()
2
Vini App

vous pouvez utiliser

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