36 votes

init(colorLiteralRed :,green :,blue :,alpha :) déprécié 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 :) " a été supprimé en Swift 4.0 (Swift._ExpressibleByColorLiteral).

Comment utiliser une couleur dégradée si init(colorLiteralRed:,green:,blue:,alpha:) est déprécié dans Swift 4 ?

55voto

OOPer Points 33473

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

Pourquoi n'utilisez-vous pas la méthode normale 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()

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

0 votes

Il existe deux nouvelles méthodes dans UIColor qui acceptent des valeurs entières de 0 à 255. Voir ma réponse ici : stackoverflow.com/a/58124535/2631081

4voto

Sudhir kumar Points 1

Vous pouvez simplement utiliser la méthode ci-dessous de la classe UIColor pour instancier une couleur à partir de Rouge, Vert, Bleu, Alpha.

Remarque : le rouge, le vert, le bleu et l'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 une couche de gradient, vous pouvez prendre la référence de

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

2voto

Vini App Points 4968

Autre moyen : https://developer.apple.com/documentation/uikit/uicolor/1621925-init

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

Initialise et renvoie un objet couleur en utilisant les valeurs d'opacité et de composante RVB spécifiées dans l'espace couleur 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()

0voto

Hatim Points 55

Vous pouvez utiliser

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X