Obj-C, установить цвет UILabel на основе значения plist? - PullRequest
2 голосов
/ 02 августа 2011

Я создал приложение для iPhone с таблицей, которая выдвигает стандартное подробное представление .xib при выборе строки. Я успешно смог заполнить текстовые значения нескольких UILabels, которые у меня есть, в этом nib-файле из списка, который у меня есть, который представляет собой массив словарей строк. Таким образом, для каждой выбранной строки таблицы в подробном представлении эти метки будут заполняться информацией, содержащейся в одном словаре, поскольку метки UILabels связаны с ключами в списке. Мне было интересно, можно ли было бы изменить цвет каждой отдельной UILabel на основе ключа в каждом словаре в этом списке.

ДЛЯ ПРИМЕРА: В строке 1 таблицы отображается представление, в котором UILabel 1 выделен красным, UILabel 2 оранжевым, UILabel 3 желтым и т. Д. В строке 2 таблицы отображается представление, в котором UILabel 1 выделено фиолетовым, UILabel 2 коричневым, UILabel 3 синим и т. Д.

Я бы хотел иметь возможность определять цвет каждой метки в каждом словаре.

Должен быть способ сделать это! Большое спасибо за вашу помощь!

1 Ответ

2 голосов
/ 02 августа 2011

Да, вы можете сделать это. Вам нужно определить словарь этой структуры (это только один из способов сделать это):

Root Dictionary

     -UILabelA
          Red   -> 143
          Green -> 225
          Red   -> 002

     -UILabelB
          Red   -> 243
          Green -> 235
          Red   -> 235

     -UILabelc
          Red   -> 198
          Green -> 025
          Red   -> 111

Тогда, допустим, вам нужен цвет UILabelA. Все, что вы делаете, это:

NSDictionary *labelADict = [[NSDictionary dictionary] objectForKey:@"UILabelA"];
//Then create the color
float red = [[labelADict objectForKey:@"Red"] floatValue] / 255.0f;
float green = [[labelADict objectForKey:@"Green"] floatValue] / 255.0f;
float blue = [[labelADict objectForKey:@"Blue"] floatValue] / 255.0f;

UIColor *color = [UIColor colorWithRed:red
                                 green:green 
                                  blue:blue 
                                 alpha:1.0];
[labelA setTextColor:color];

Вы можете сделать это динамически для каждой таблицы / ячейки.

...