как да използвам конкретен 2 цвята за кръгова диаграма с помощта на uicolor?

Бих искал да попитам нещо относно персонализирания метод UIColor. В моя проект създавам кръгова диаграма, използвайки магическа кръгова диаграма lib. Сега има един метод за задаване на цвят за кръгова диаграма като

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