Как ввести аргумент в CGContextSetRGBFillColor? - PullRequest
12 голосов
/ 26 ноября 2011

Я пытаюсь ввести аргументы для CGContextSetRGBFillColor, используя тип данных. Например:

NSString *colorcode = ctx, 0, 1, 0, 0; 
CGContextSetRGBFillColor(colorcode);

Но я получаю сообщение о том, что у меня слишком мало аргументов.

Я хочу изменить аргументы (ctx, 0, 1, 0, 1 ), отправленные на CGContextSetRGBFillColor, в зависимости от действий пользователя.

Я хочу ввести аргумент для CGContextSetRGBFillColor, используя тип данных, потому что его значения устанавливаются в отдельном контроллере представления. Или я могу напрямую ввести аргументы в CGContextSetRGBFillColor, а затем перенести его на другой контроллер представления, чтобы использовать его?

Ответы [ 3 ]

40 голосов
/ 26 ноября 2011

Попробуйте использовать объект UIColor для сохранения выбранного пользователем цвета. Вы можете создать его так:

UIColor *color = [UIColor colorWithRed:0 green:1 blue:0 alpha:0];

Затем, когда пришло время использовать его в качестве цвета заливки, вы можете сделать это:

CGContextSetFillColorWithColor(ctx, color.CGColor);

Я должен отметить, что если вы не используете ARC, вам нужно сохранить и выпустить цвет соответствующим образом.

1 голос
/ 26 ноября 2011

Похоже, что вам действительно нужно сделать это:

CGContextSetRGBFillColor (ctx, 0.0f, 1.0f, 0.0f, 1.0f);

Где каждый компонент цвета представляет собой некоторую долю от 0,0 до 1,0.

Почему вы используете строку NSString?

Вот документация на сайте Apple .

0 голосов
/ 26 ноября 2011

Я хочу ввести аргумент для CGContextSetRGBFillColor, используя тип данных, поскольку его значения устанавливаются в отдельном контроллере представления.

Вас может заинтересовать CGColor class, или, в частности, для iOS, UIColor .

Или я могу напрямую ввести аргументы в CGContextSetRGBFillColor…

Это единственныйспособ ввода аргументов в CGContextSetRGBFillColor.

… и затем перенести его на другой контроллер представления, чтобы использовать его?

Это не имеет смысла.Что еще нужно сделать?

Если вы хотите перенести цвет из одного контроллера представления в другой, лучше всего создать цветовой объект - либо CGColor, либо UIColor - и передать его.

...