Работа с диаграммой и временной осью

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

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

Описание

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

После повторного нажатия на область диаграммы легенда скрывается.

Также в консоль среды разработки выводится следующая информация:

Исходный код

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

// Функция для выполнения примера
-(void) executeExample{
    // Определяем и устанавливаем объект, предназначенный для работы с индексами временной оси
    TimeIndexDelegate *timeIndexDelegate = [TimeIndexDelegate new];
    [chart setTimeIndexDelegate:timeIndexDelegate];
    // Определяем объект, предназначенный для работы с линией уровня
    LevelLineHolderDelegate *levelLineHolderDelegate = [LevelLineHolderDelegate new];
    // Определяем линию уровня
    LevelLineHolder *line = [[LevelLineHolder new] autorelease];
    [line setIsHorisontal:YES]; // Положение линии
    [line setDelegate:levelLineHolderDelegate];
    [line setColor:[UIColor blueColor]]; // Цвет линии
    [line setThickness:5]; // Толщина линии
    [line setValue:2]; // Значение линии уровня
    [line setVisible:YES]; // Признак видимости линии
    [line setName:@"Линия уровня"]; // Имя линии
    [line setLabelVisible:YES]; // Признак видимости метки линии
    [line setChartView:chart]; // Диаграмма, к которой принадлежит линия
    // Добавляем линию на диаграмму
    [chart addLevelLine:line];
};
// Обрабатываем событие касания области диаграммы
- (void)chartTouchesTapInView:(UIView *)v withPoint:(CGPoint)point{
    // Получаем линию уровня
    LevelLineHolder *line = [chart levelLines][0];
    // Получаем легенду диаграммы
    ChartLegend *legend = [chart legend];
    ChartPlaced *pl = [[ChartPlaced new] autorelease];
    // Устанавливаем отступы
    Thickness t;
    t.top = 200;
    t.right = 30;
    [legend setAutoMargin:t];
    if([[chart timeAxis] index] != 0)
    {
        // Устанавливаем область отрисовки для легенды диаграммы
        [legend setFrameForChartPlaced:legend];
    }
    else{
        // Скрываем легенду диаграммы
        [legend setOptimizedOut:YES];
        return;
    }
    // Инициируем событие изменения значения линии уровня
    [[line delegate] levelLineHolderValueChanged:[[chart timeAxis] index]];
    // Устанавливаем значение линии уровня
    [line setValue:[[chart timeAxis] index]];
    // Выводим фактический размер области легенды
    CGRect bounds = [legend boundsWithPadding];
    NSLog(@"%@ (%f, %f)", @"Фактический размер области легенды:", bounds.size.width,bounds.size.height);
    // Выводим значение размера дополнительных внутренних отступов легенды
    NSLog(@"%@ %f", @"Размер дополнительных внутренних отступов легенды:", [legend autoPadding]);
    // Выводим значение размера дополнительных внешних отступов легенды
    NSLog(@"%@ %f", @"Размер дополнительных внешних отступов легенды:", [legend autoMargin]);
    // Получаем точку ряда данных по указанным координатам
    LinePoint *chartPoint = [[chart chartArea] findChartPointHit:CGPointMake(405, 152)];
    // Изменяем размер маркера точки ряда данных
    [chartPoint setMarkerSize:20];
    // Сбрасываем значение временной оси
    [[chart timeAxis] reset];
}

В результате выполнения примера будет добавлена линия уровня:

Установим значение временной оси на любое значение, отличное от 0, нажмем на область диаграммы.

В результате будет изменено значение линии уровня, легенда диаграммы будет отображена в другой области, будет изменен размер маркера точки ряда данных, а значение временной оси будет сброшено:

Нажмем на область диаграммы.

В результате легенда диаграммы будет скрыта:

Также в консоли среды разработки будет выведена информация о новых значениях временной шкалы и линии уровня, а также информация о легенде диаграммы:

Индекс временной шкалы изменен, новое значение индекса: 7

Значение линии уровня изменено, новое значение: 7.000000

Фактический размер области легенды: (600.000000, 450.000000)

Размер дополнительных внутренних отступов легенды: 0.000000

Размер дополнительных внешних отступов легенды: 0.000000

Индекс временной шкалы изменен, новое значение индекса: 0

См. также:

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