Вот подробное объяснение:
Изначальная установка цвета фона представления:
swift
view.backgroundColor = UIColor.green
Здесь вы устанавливаете свойство backgroundColor у UIView в зелёный цвет. Это означает, что и само представление, и его слой (CALayer) будут иметь зелёный фон.
Изменение цвета фона слоя:
swift
view.layer.backgroundColor = UIColor.red.cgColor
Здесь вы напрямую устанавливаете свойство backgroundColor у слоя (CALayer) в красный цвет. Это свойство типа CGColor, поэтому мы используем UIColor.red.cgColor.
Взаимосвязь между UIView и его CALayer:
В UIView, свойство backgroundColor является обёрткой над соответствующим свойством слоя (layer.backgroundColor).
Когда вы изменяете backgroundColor у слоя напрямую, это изменение отражается на уровне представления.
Поэтому, после установки view.layer.backgroundColor в красный цвет, свойство view.backgroundColor обновляется и начинает отражать это изменение.
Вывод значения backgroundColor:
swift
print(view.backgroundColor)
Когда вы печатаете view.backgroundColor, вы получаете текущий цвет фона представления.
Поскольку последний установленный цвет фона слоя — красный, view.backgroundColor теперь тоже красный.
Поэтому выводит Optional(UIExtendedSRGBColorSpace 1 0 0 1), что соответствует красному цвету с альфа-каналом 1 (полностью непрозрачный).