Использование градиента для условного форматирования ячеек

Требования к операционной системе: iOS 5.0 и выше.

Мобильное устройство: iPad.

Описание

В данном примере описывается использование градиента для условного форматирования ячеек таблицы. После его запуска выполняются следующие операции:

Исходный ход

Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Создание простой электронной таблицы») следующий код:

// Получаем стиль ячейки с координатами B1
NuGridCellStyle *style = [proxyDatasource gridView:[contr gridView] getStyleForCellInRow:1
column:1];
// Определяем цвета для градиента
UIColor *redColor = [UIColor colorWithRed:0.94 green:0.43 blue:0.46 alpha:1];
UIColor *yellowColor = [UIColor colorWithRed:0.96 green:0.91 blue:0.46 alpha:1];
UIColor *greenColor = [UIColor colorWithRed:0.62 green:0.86 blue:0.29 alpha:1];
// Определяем две цветовые схемы
NSMutableArray *colorsTheme = [[NSMutableArray new] autorelease];
[colorsTheme addObject:@[redColor, yellowColor, greenColor]];
[colorsTheme addObject:@[greenColor, yellowColor, redColor]];
// Используем вторую цветовую схему
[style setGradientTag:1];
// Определяем количество строк
int rowCount = [datasource gridViewRowCount:[contr gridView]];
int columnNumber = 2;
// Определяем массив значений столбцов
NSMutableArray *valueArray = [[NSMutableArray new] autorelease];
for (int i = 0; i < rowCount; ++i) {
    NSObject *value = [datasource gridView:[contr gridView] valueForCellInRow:i inColumn:columnNumber];
    [valueArray addObject:value];
    if (valueArray.count > 0) {
        // Сортируем значения в массиве
        [valueArray sortUsingSelector:@selector(compare:)];
        // Определяем минимальное, среднее и максимальное значения
        style.minGradValue = [[valueArray objectAtIndex:0] doubleValue];
        style.midGradValue = [[valueArray objectAtIndex:valueArray.count / 2] doubleValue];
        style.maxGradValue = [[valueArray lastObject] doubleValue];
    }
}
// Указываем, что все настройки градиента заданы
[style setIsGradientConfigured:YES];
//[style removeGradientTag]; // Дефект
// Получаем цветовую схему
NSArray *colorArray = colorsTheme[[style gradientTag]];
/* Определяем цвета, соответствующие минимальному, среднему
и максимальному значению */
[style setMinColor:colorArray[0]];
[style setMidColor:colorArray[1]];
[style setMaxColor:colorArray[2]];
[style setGradientColumnBackground:YES];
[style setGradientRowBackground:YES];
// Применяем созданный стиль
for (int i = 0; i < [datasource gridViewRowCount:[contr gridView]]; i++) {
    for (int j = 0; j < [datasource gridViewColumnCount:[contr gridView]]; j++) {
        [proxyDatasource gridView:[contr gridView] setStyle:style forCellInRow:i column:j];
    }
}

В результате выполнения примера для ячеек таблицы было применено условное форматирование с использованием градиента:

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

NSLog(@"Метка для условного форматирования до её удаления: %d", [style gradientTag]);
// Удаляем метку, используемую для форматирования градиентом
[style removeGradientTag];
NSLog(@"Метка для условного форматирования после её удаления: %d", [style gradientTag]);
// Удаляем признак того, что градиент для условного форматирования сформирован
[style removeIsGradientConfigured];

После выполнения примера в консоли среды разработки была выведена используемая для условного форматирования метка до и после её удаления:

Метка для условного форматирования до её удаления: 1

Метка для условного форматирования после её удаления: -1
 

Таблица стала иметь первоначальный вид:

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

[style removeMinColor];
[style removeMidColor];
[style removeMaxColor];

Удалим минимальное, среднее и максимальное значения ячеек таблицы:

[style removeMinGradValue];
[style removeMidGradValue];
[style removeMaxGradValue];

В результате выполнения примера ячейки стали иметь фон чёрного цвета:

См. также:

Примеры использования компонентов