Требования к операционной системе: 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
См. также: