2017-07-27 59 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() 

錯誤:的init(colorLiteralRed:綠色:藍色:,阿爾法:)斯威夫特棄用4

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

如何使用漸變色,如果init(colorLiteralRed:,green:,blue:,alpha:)在斯威夫特4棄用?

回答

34

init(colorLiteralRed:green:blue:alpha:)旨在與由開發工具管理的顏色文字一起使用。

爲什麼不使用普通的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() 

(編寫像234.0/255.0不是強制性的,在上下文中斯威夫特以上,但它可以防止斯威夫特編譯器來解釋234/255在一些其他情況下的整數除法。)

4

您可以直接在下面使用的UIColor類的方法從紅,綠,藍,阿爾法

實例顏色

注:紅,綠,藍和Alpha具有範圍從0 TO1的值

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

創建您可以參考從

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

2

另一種方式梯度層: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.

可以使用displayP3Red代替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

可以使用

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