Как преобразовать Color Literal в cgColor в Swift?

var CodeBackground = #colorLiteral(red: 0.1294117647, green: 0.1294117647, blue: 0.1960784314, alpha: 1)

cells?.layer.borderColor = //... how can i set this color literal to cgColor?

Поскольку я знаю, как преобразовать этот UIColor в cgColor в Swift

как пример

UIColor.black.cgColor

Бинго, а как насчет Color Literal для cgColor в Swift

Спасибо.


person Antonio Adrian Chavez    schedule 21.05.2020    source источник
comment
Точно так же whatever.cgColor. dropbox.com/s/xxd6nw06z1adxzq/color%20literal.jpg? dl=1 Кстати, это соглашение об именах Swift, чтобы называть ваши объекты, начинающиеся со строчной буквы.   -  person Leo Dabus    schedule 21.05.2020
comment
Это все еще проблемы, я запустил iOS Simulator и отказался отображать цвет. (если только создание нескольких ячеек не может привести к ошибкам, когда вы скользите вниз, чтобы пройти эту одну ячейку, и скользите вверх, и это было одинаково для разных ячеек). Мне просто нужно установить UIColor, однако этот код показывает ошибку, которая запрашивает использование cgColor из UIColor .... кажется странным.   -  person Antonio Adrian Chavez    schedule 21.05.2020
comment
ячейки многоразового использования   -  person Leo Dabus    schedule 21.05.2020
comment
В табличном представлении есть метод optional func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath). Вы можете очистить содержимое ячейки, как только табличное представление перестанет отображать его.   -  person Leo Dabus    schedule 21.05.2020
comment
все просто, используйте как: viewBack.layer.borderColor = #colorLiteral(красный: 0.05882352963, зеленый: 0.180392161, синий: 0.2470588237, альфа: 1).cgColor//UIColor.white   -  person Jaydip    schedule 21.05.2020
comment
Ммм, звучит интересно. Позвольте мне попробовать этот метод. :D   -  person Antonio Adrian Chavez    schedule 21.05.2020


Ответы (1)


  • Поскольку вы уже знаете более простой способ использования colorLiteral как cgcolor, я перейду к другому способу сделать это...
  • Для этого вам нужна пользовательская функция, которая получает значение цвета (красный, зеленый, синий) из colorLiteral, как показано ниже.

    extension UIColor {
        func rgb() -> (red:Int, green:Int, blue:Int, alpha:Int)? {
        var fRed : CGFloat = 0
        var fGreen : CGFloat = 0
        var fBlue : CGFloat = 0
        var fAlpha: CGFloat = 0
        if self.getRed(&fRed, green: &fGreen, blue: &fBlue, alpha: &fAlpha) {
            let iRed = Int(fRed * 255.0)
            let iGreen = Int(fGreen * 255.0)
            let iBlue = Int(fBlue * 255.0)
            let iAlpha = Int(fAlpha)
    
            _ = (iAlpha << 24) + (iRed << 16) + (iGreen << 8) + iBlue
            return (red:iRed, green:iGreen, blue:iBlue, alpha:iAlpha)
        } else {
            // Could not extract RGBA components:
            return nil
        }
    }
    }
    //It's more convenient to use function in `UIColor` extension
    
  • Теперь, после создания этой функции, вы можете преобразовать colorliteral в cgColor, как показано ниже...

    let CodeBackground = #colorLiteral(red: 0.1294117647, green: 0.1294117647, blue: 0.1960784314, alpha: 1)
    let rgblit = CodeBackground.rgb()
    let Converted_cgColor = CGColor(srgbRed: CGFloat(integerLiteral: rgblit!.red), green: CGFloat(integerLiteral: rgblit!.green), blue: CGFloat(integerLiteral: rgblit!.blue), alpha: CGFloat(integerLiteral: rgblit!.alpha))
    
  • Вы можете напрямую использовать Converted_cgColor как

    cells?.layer.borderColor = Converted_cgColor
    

НАДЕЮСЬ, ЭТО ПОМОЖЕТ

person Nayan Dave    schedule 21.05.2020
comment
Ааа, сработало! однако этот код привел к тому, что все ячейки стали невидимыми, как будто ничего не показывало цвет, пока я следовал вашему курсу. - person Antonio Adrian Chavez; 22.05.2020
comment
Пожалуйста, проголосуйте за него, чтобы поддержать и одобрить ответ, если он сработал :) - person Nayan Dave; 22.05.2020
comment
Теперь я обнаружил, что есть способы добавить код цвета границы в одну ячейку, за исключением того, что все ячейки не нужны, кажется, это тоже сработало. Я проголосовал и одобрил. :) - person Antonio Adrian Chavez; 23.05.2020