init (colorLiteralRed:,green:,blue:,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?
4 ответов
init(colorLiteralRed:green:blue:alpha:)
предназначен для использования с цветными литералами, управляемыми средствами разработки.
почему бы вам не использовать normal 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
как целочисленное деление в некоторых других контекстах.)
вы можете просто использовать ниже метод класса 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://developer.apple.com/documentation/uikit/uicolor/1621925-init
init (displayP3Red: CGFloat, зеленый: CGFloat, синий: CGFloat, Альфа: CGFloat)
инициализирует и возвращает объект цвета, используя заданные значения непрозрачности и компонента RGB в цветовом пространстве дисплея 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()
можно использовать
UIColor(red: CGFloat(255.0), green: CGFloat(255.0), blue: CGFloat(255.0), alpha: CGFloat(255.0))