IOS CGColor против UIColor
Я использую 2 варианта одного и того же цвета - светлую и темную - для создания градиента.
код:
CAGradientLayer *gradient = [CAGradientLayer layer];
UIColor *light = [baseColor lightVersion];
UIColor *dark = [baseColor darkVersion];
gradient.colors = [NSArray arrayWithObjects:(id)[light CGColor], (id)[dark CGColor], nil];
Проблема в том, что я заметил, что версия CGColor
исходной версии UIColor
отличается. Почему это? В чем разница между UIColor
и CGColor
и почему они различны?
Ответы
Ответ 1
UIColor
Наследует от NSObject
и связан с UIKit Framework
, а CGColor
связан с CoreGraphics
и CGColor
происходит от CFType
.
Итак, если вы используете элементы UIKit, вы можете использовать UIColor
, но если вы используете рисунок с использованием Core Graphics или работаете с CALayer
, вы должны использовать CGColor
.
Согласно документации UIColor
Многие методы в UIKit требуют, чтобы вы указывали данные о цвете, используя Объект UIColor, и для общих потребностей цвета это должен быть ваш основной путь для указания цветов. Цветовые пространства, используемые этим объектом, оптимизированы для использования на устройствах на базе iOS и поэтому подходят для большинства потребностей рисования. Если вы предпочитаете использовать цвета Core Graphics и тем не менее, вы можете сделать это.
Ответ 2
После прочтения вашего вопроса я попробовал образец проекта, в котором я взял ярлык с цветом фона, имеющим значения RGB (100 100 100). И установите его цвет границы для тех же значений RGB, но это CGColor, но я не нашел в них никакой разницы. См. Прикрепленное изображение. Ширина границы 5 пикселей. ![Label with same background color and border color]()
Ответ 3
UIColor
является всего лишь оболочкой объекта Objective-C объекта C CGColor
. Не должно быть разницы.
Ответ 4
Нет никакой разницы между UIColour и CGColour.