как использовать определенные 2 цвета для круговой диаграммы с помощью uicolor?

Я хотел бы спросить кое-что о пользовательском методе UIColor. В моем проекте я создаю круговую диаграмму, используя волшебную библиотеку круговых диаграмм. Теперь есть один метод установки цвета для круговой диаграммы, например

CGFloat hue = ( arc4random() % 256 / 256.0 );  //  0.0 to 1.0
CGFloat saturation = ( arc4random() % 128 / 256.0 ) + 0.5;  //  0.5 to 1.0, away from white
CGFloat brightness = ( arc4random() % 128 / 256.0 ) + 0.5;  //  0.5 to 1.0, away from black
return [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1];.

У меня вопрос, а не использовать случайный цвет, я хочу исправить только два цвета, например СИНИЙ цвет и зеленый цвет, так как это исправить? Я не хочу менять цвет каждый раз при загрузке контроллера.

Заранее благодарим за любезный ответ.


person kins parikh    schedule 25.11.2015    source источник


Ответы (1)


Это зависит от нескольких вещей, но один из подходов может заключаться в замене вызова функции на опубликованный вами код с фиксированными UIColors. Если вам нужно только два цвета, у вас может быть флаг на вашем контроллере, который указывает, что цвет 1 был использован, и вместо этого будет использовать цвет 2 в следующий раз, когда он будет вызван. т.е.

// replace call to random colour code with this, and define a boolean in your class to use as a flag:

if(!someFlag) { 
  someFlag = YES;
  return [UIColor redColor];
}
else {
  someFlag = NO;
  return [UIColor blueColor];
}
person BinaryGuy    schedule 25.11.2015
comment
привет, BinaryGuy, спасибо за ваш ценный ответ, но я не могу понять, использую ли я подобное решение, когда на круговой диаграмме отображается только один цвет. например, если я хочу показать такое же соотношение размера и дохода. поэтому он показывает только синий, а если флаг НЕТ, то красный цвет - person kins parikh; 25.11.2015
comment
Трудно дать совет, потому что я не знаю вашего кода, но я полагаю, что он не работает, потому что флаг не сохраняется при вызовах этой функции из-за того, что объект каждый раз инициализируется. Вам каким-то образом нужно сделать переменную someFlag «постоянной», чтобы вы могли рассчитывать на ее переключение каждый раз, когда вы пытаетесь получить новый цвет. - person BinaryGuy; 25.11.2015