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

Lỗi:init (colorLiteralRed:, xanh lá cây:, màu xanh:, alpha :) bị phản đối ở Swift 4

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

Làm thế nào để sử dụng màu gradient nếu init(colorLiteralRed:,green:,blue:,alpha:) bị phản đối ở Swift 4?

Trả lời

34

init(colorLiteralRed:green:blue:alpha:) được thiết kế để sử dụng với Bảng màu được quản lý bởi công cụ phát triển.

Tại sao bạn không sử dụng bình thường 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() 

(Viết như 234.0/255.0 là không bắt buộc, trong bối cảnh như trên trong Swift. Nhưng nó ngăn cản biên dịch Swift để giải thích 234/255 như một phép chia số nguyên trong một số bối cảnh khác.)

4

Bạn chỉ có thể sử dụng dưới đây phương pháp của lớp UIColor để nhanh chóng màu từ đỏ, màu xanh lá cây, xanh da trời, Alpha

Lưu ý: Red, Green, Blue và Alpha có giá trị từ 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) 
} 

Để Tạo layer gradient bạn có thể lấy tài liệu tham khảo từ

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

2

Một cách khác: 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.

bạn có thể sử dụng displayP3Red thay vì 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

bạn có thể sử dụng

UIColor(red: CGFloat(255.0), green: CGFloat(255.0), blue: CGFloat(255.0), alpha: CGFloat(255.0)) 
Các vấn đề liên quan