Расшифровка CGColor - PullRequest
       35

Расшифровка CGColor

1 голос
/ 09 июля 2011

Привет, я пытаюсь разобраться с CGColor, я много работал над Quartz2d. В прошлом я выдумывал это с помощью [UIColor xColor] .CGColor .... но с этим новым компилятором я получаю сбои, когда я задаю цвет, то есть [UIColor redColor] .CGColor хорошо, но если я готовлю свой собственный [UIColor цвет withRed: x Зеленый: y и т. д.]. CGColor это вылетает. Я не думаю, что это проблема сохранения, потому что [UIColor alloc] initWithRed:]. CGColor дает мне то же самое. Я полагаю, что мост UIColor -> CGColor немного выдуманный, жестко запрограммированный только для предустановленных цветов, а не для преобразования. И поэтому я ищу схему CGColor типа RGB, чтобы я мог восстановить цвет из массива значений. Меня не волнует 0-1 или 1-255 и т. Д., Просто нужна система, в которой я могу разобраться, если кто-то может бросить мне кость, я бы очень признателен за это

Ответы [ 2 ]

5 голосов
/ 09 июля 2011

Я ожидаю, что на самом деле происходит то, что вы не сохраняете полученный цвет, и вы позволяете UIColor автоматически освобождаться.Встроенные цвета (например, -redColor и т. Д.) - это, вероятно, глобальные объекты, которые живут вечно, но те, которые вы создаете с помощью -colorWithRed:green:blue:alpha:, создаются по требованию и автоматически высвобождаются.Если вы вытащите из него CGColor, время жизни CGColor будет связано с временем жизни UIColor, поэтому, если вы собираетесь удерживать CGColor за текущим стеком, вам нужно CGColorRetain() его (а затем CGColorRelease() это когда вы закончите).

1 голос
/ 09 июля 2011

Вы можете создать его с помощью CGColorRef CGColorCreateGenericRGB (CGFloat красный, CGFloat зеленый, CGFloat синий, CGFloat alpha);

подробности здесь: http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CGColor/Reference/reference.html

...