Ячейка со спарклайн-графиком в простой электронной таблице

Описание: пользовательская ячейка электронной таблицы, унаследованная от класса NuGridCellWithSparkline.

Файл «SparklineCell.h»

#import <NuGridView/NuGridView.h>
#import <NuGridView/NuGridCellWithSparkline.h>
#import <NuGridView/NuGridSparklineHelper.h>
@interface SparklineCell : NuGridCellWithSparkline
@property bool isUseSparkline; // Признак использования ячейки со спарклайн-графиком
@end

Файл «SparklineCell.m»

#import "SparklineCell.h"
@implementation SparklineCell
@synthesize isUseSparkline = _isUseSparkline;
- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
    }
    return self;
}
- (void)drawRect:(CGRect)rect
{
    if ([self isUseSparkline]) {
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGRect frame = self.bounds;
        // Определяем данные спарклайна
        NuGridSparklineData *sparklineData = [[NuGridSparklineData new] autorelease];
        [sparklineData setValues:[NSArray arrayWithObjects:[NSNumber numberWithInt:0],
        [NSNumber numberWithInt:0],
        [NSNumber numberWithInt:1],
        [NSNumber numberWithInt:4],
        [NSNumber numberWithInt:4],
        [NSNumber numberWithInt:3],
        [NSNumber numberWithInt:8],
        [NSNumber numberWithInt:8],
        [NSNumber numberWithInt:5],
        nil]];
        // Устанавливаем минимальное и максимальное значение данных
        [sparklineData setMinValue:0];
        [sparklineData setMaxValue:10];
        // Устанавливаем индексы точек с пиковыми значениями данных
        [sparklineData setMaxPeakElementIndex:3];
        [sparklineData setMinPeakElementIndex:1];
        // Создаём объект, используемый для построения спарклайн-графика
        NuGridSparklineHelper *helper = [NuGridSparklineHelper sparklineHelper];
        CGPathRef pathRef = [helper createPathWith:sparklineData forSize:frame.size];
        CGPathRef maxPeakRef = [helper createPathForMaxPeakIn:sparklineData forSize:frame.size];
        CGPathRef minPeakRef = [helper createPathForMinPeakIn:sparklineData forSize:frame.size];
        // Устанавливаем цвет графика
        [[UIColor orangeColor] set];
        // Рисуем графики и пиковые значения
        CGContextAddPath(context, pathRef);
        CGContextAddPath(context, maxPeakRef);
        CGContextAddPath(context, minPeakRef);
        CGContextFillPath(context);
        CGPathRelease(pathRef);
    }
    [super drawRect:rect];
}
@end

См. также:

Создание простой электронной таблицы