Подтвердить что ты не робот

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 и почему они различны?

4b9b3361

Ответ 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.