Преобразование rgb в гекс в Swift - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь преобразовать свой цвет RGB в шестнадцатеричное значение. К сожалению, он всегда возвращает 000000. Вот мой код, который я пробовал:

let red = CGFloat(drand48())
let green = CGFloat(drand48())
let blue = CGFloat(drand48())

let hexValue = String(format:"%02X", red) + String(format:"%02X", green) + String(format:"%02X", blue)

1 Ответ

4 голосов
/ 28 октября 2019

Вот лучший способ сгенерировать 3 случайных числа и преобразовать их в шестнадцатеричную строку:

let red = Int.random(in: 0...255)
let green = Int.random(in: 0...255)
let blue = Int.random(in: 0...255)
let hex = String(format:"%02X%02X%02X", red, green, blue)

Причина, по которой ваш код не работает, состоит в том, что ваши числа находятся в диапазоне CGFloatОт 0,0 до 1,0. Но ваш формат строки обрабатывает их как Int значения.

Кроме того, использование drand48 требует, чтобы вы сначала заполнили их.

...