Алгоритм установки цвета чего-либо в зависимости от его первого символа - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь провести различие между некоторыми цветами фона в моем приложении. Какая самая большая связь с этим фоном? Это то, что внутри него есть текст,

Так что я подумал о создании алгоритма, который будет делать следующее:

  • Получить первый символ строки
  • Разделить все персонажи на 5 групп (может получить все символы, подсчитать и разделить на 5, затем выбрать ярость) .. Например:
    • От A -> E
    • От E -> I
    • Из I -> N
    • Из N -> S
    • Из S -> Z

И из этих групп я может определить, к какой группе принадлежит текст, и установить цвет фона для каждой из этих 5 групп:

Например, у меня есть текст «Hello», тогда это из группы № 2, кому фон цвет # ff0000

У меня есть небольшая проблема в том, что если символ не из аз (возможно, число или арабский c символ), то это будет полная отдельная группа (?)

Есть ли лучший алгоритм для этого случая? Если нет, я хотел бы знать, как сделать вышеупомянутый алгоритм, используя Objective- C

УДЕРЖИВАЙТЕ ОТМЕТЬТЕ: Я не хочу случайный ЦВЕТ! Я хочу, чтобы это основывалось на набор цветов, которые я ограничил!

Я нашел это: http://randomstringtocsscolor.com/, но это генератор случайных чисел.

Что я пробовал?

Используя NSString characterAtIndex:, я могу получить значение цифры c символа, а затем легко сравнить его

NSString *text = @"Hello";
unichar firstCharValue = [text characterAtIndex:0];

if(firstCharValue >= 5){
  // background color Broup A
} else if(firstCharValue >= 10){
  // background color Group B
} else if(firstCharValue >= 15){
  // background color Group C
} else {
  // background color default (unknown characters)
}

Что плохого в этом это решение?

Не очень удобно с точки зрения проверки, если число больше или равно X, и не очень хорошо с неизвестными символами, мне интересно узнать больше о более удобный алгоритм.

1 Ответ

1 голос
/ 09 апреля 2020

Вы можете написать функцию, которая принимает текст и возвращает случайный цвет для слова .

-(UIColor *) randomColorFor:(NSString *) text{
    NSArray *colors = @[UIColor.blackColor, UIColor.redColor, UIColor.greenColor, UIColor.orangeColor];
    int code = (int)[[text uppercaseString] characterAtIndex:0];
    int index = code % colors.count;
    return colors[index];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...