Подтвердить что ты не робот

Init (colorLiteralRed:, зеленый:, синий:, alpha:) устарел в 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()

Ошибка:

'init (colorLiteralRed: green: blue: alpha:)' был устаревшим в Swift 4.0 (Swift._ExpressibleByColorLiteral)

Как использовать цвет градиента, если init(colorLiteralRed:,green:,blue:,alpha:) устарел в Swift 4?

4b9b3361

Ответ 1

init(colorLiteralRed:green:blue:alpha:) предназначен для использования с Color Literals, которые управляются инструментами разработки.

Почему вы не используете обычный 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 не является обязательным в контексте, как указано выше в Swift. Но это не позволяет компилятору Swift интерпретировать 234/255 как целочисленное деление в некоторых других контекстах.)

Ответ 2

Вы можете просто использовать метод ниже класса UIColor для создания экземпляров из красного, зеленого, синего, альфа-цвета.

Примечание: красный, зеленый, синий и альфа имеют значение в диапазоне от 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)
}

Чтобы создать градиентный слой, вы можете взять ссылку из

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

Ответ 3

Другой способ: https://developer.apple.com/documentation/uikit/uicolor/1621925-init

init (displayP3Red: CGFloat, зеленый: CGFloat, синий: CGFloat, alpha: CGFloat)

Инициализирует и возвращает цветной объект с использованием указанных значений непрозрачности и RGB-компонентов в цветовом пространстве Display P3.

вы можете использовать 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()

Ответ 4

ты можешь использовать

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