Добавление линий уровня

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

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

Описание

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

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

Исходный код

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

// Функция для выполнения примера
-(void) executeExample{
    // Устанавливаем максимальное количество столбцов легенды
    [[chart legend] setMaximumColumnCount:2];
    // Устанавливаем использование упорядочивания по максимальному количеству столбцов
    [[chart legend] setOrderByColumn:YES];
    // Определяем линию уровня
    LevelLineHolder *line1 = [[LevelLineHolder new] autorelease];
    [line1 setIsHorisontal:YES]; // Положение линии
    [line1 setColor:[UIColor orangeColor]]; // Цвет линии
    [line1 setThickness:8]; // Толщина линии
    [line1 setValue:9]; // Значение линии уровня
    [line1 setVisible:YES]; // Признак видимости линии
    [line1 setName:@"Линия1"]; // Имя линии
    [line1 setLabelVisible:YES]; // Признак видимости метки линии
    [line1 setChartView:chart]; // Диаграмма, которой принадлежит линия
    // Сохраняем параметры линии
    NSDictionary *line1Dict = [line1 saveState];
    // Определяем линию уровня
    LevelLineHolder *line2 = [[LevelLineHolder new] autorelease];
    // Инициализируем линию уровня указанными параметрами
    [line2 initWithDict:line1Dict];
    [line2 setName: @"Линия2"];
    [line2 setValue:5];
    [line2 setColor:[UIColor blueColor]];
    [line2 setChartView:chart];
    [line2 setIsHorisontal:NO];
    // Добавляем созданные линии на диаграмму
    [chart addLevelLine:line1];
    [chart addLevelLine:line2];
};
// Обрабатываем событие касания области диаграммы
- (void)chartTouchesTapInView:(UIView *)v withPoint:(CGPoint)point
{
    // Выполняем следующий код, если количество линий уровня на диаграмме равно двум
    if([chart levelLines].count == 2)
    {
        // Получаем первую линию уровня диаграммы
        LevelLineHolder *line1 = [chart levelLines][0];
        // Определяем точку с заданными координатами
        CGPoint p = CGPointMake(248, 158);
        // Выводим признак принадлежности указанной точки линии уровня
        NSLog(@"%@ (%f, %f) линии уровня: %hhd", @"Признак принадлежности точки с координатами ",
              p.x, p.y, [line1 findLevelLineHit:p]);
        // Выводим позицию линии уровня
        NSLog(@"%@ %f", @"Позиция линии уровня на графике:", line1.position);
        // Выводим позицию линии уровня
        NSLog(@"%@ %f", @"Абсолютная позиция линии уровня:", line1.x);
        // Выводим тип линии
        switch ([line1 isHorisontal]) {
            case YES:
                NSLog(@"Тип линии: горизонтальный");
                break;
            case NO:
                NSLog(@"Тип линии: вертикальный");
            default:
                break;
        }
        // Получаем вторую линию уровня диаграммы
        LevelLineHolder *line2 = [chart levelLines][1];
        // Сохраняем параметры линии
        NSDictionary *line2Dict = [line2 saveState];
        // Изменим значение параметра цвета
        [line2Dict setValue:[UIColor purpleColor] forKey:@"color"];
        // Загружаем параметры линии
        [line2 loadState:line2Dict];
        // Если диаграмма содержит указанную линию, то удаляем ее
        if([chart hasLevelLine:line1])
        {
            [chart deleteLevelLine:line1];
        }
        // Перерисовываем диаграмму
        [chart redrawChart];
    }
    else
    {
        // Удаляем все линии уровня диаграммы
        [chart deleteAllLevelLines];
        // Перерисовываем диаграмму
        [chart redrawChart];
    }
}

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

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

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

Признак принадлежности точки с координатами  (248.000000, 158.000000) линии уровня: 1

Позиция линии уровня на графике: 154.000000

Абсолютная позиция линии уровня: 243.775000

Тип линии: горизонтальный

После чего данная линия уровня была удалена, а у второй линии уровня был изменен цвет:

После ещё одного нажатия на область диаграммы будут удалены все линии уровней.

См. также:

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