Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере происходит загрузка представления блока аналитической панели. В консоль среды разработки выводятся следующие данные блока:
информация о привязках блока к границам окна;
значения отступов блока;
информация о тени блока;
информация о цвете фона блока;
информация о границах блока;
информация о фоновом градиенте блока;
размеры блока аналитической панели;
имя блока;
описание блока;
тип блока;
ключ блока;
имя элемента блока;
значения свойств блока указанных типов.
Для выполнения примера необходимо разместить вместо метода executeExample класса ViewController (см. раздел «Отображение аналитической панели») следующий код:
// Получаем контроллер аналитической панели
MADashboardReportViewController *controller = (MADashboardReportViewController*)m_controller;
if ([[[controller report] compositeBlocks] count] > 0) {
// Получаем блок аналитической панели
APCompositeBlock *block = [[[controller report] compositeBlocks] allValues][0];
// Загружаем представление, если оно не было загружено
if([block view] != nil){
[block loadView];
// Извещаем блок о том, что загружены дочерние представления
if([block isViewLoaded])
[block viewDidLayoutSubviews];
}
// Выводим информацию о привязках блока аналитической панели
NSLog(@"Признак привязки блока к верхней границе окна: %hhd", [block anchorTop]);
NSLog(@"Признак привязки блока к нижней границе окна: %hhd", [block anchorBottom]);
NSLog(@"Признак привязки блока к левой границе окна: %hhd", [block anchorLeft]);
NSLog(@"Признак привязки блока к правой границе окна: %hhd", [block anchorRight]);
// Выводим информацию об отступах блока аналитической панели
if([block usePaddings]){
NSLog(@"Значения отступа блока сверху: %f", [block paddingTop]);
NSLog(@"Значения отступа блока снизу: %f", [block paddingBottom]);
NSLog(@"Значения отступа блока слева: %f", [block paddingLeft]);
NSLog(@"Значения отступа блока справа: %f", [block paddingRight]);
}
// Выводим информацию о тени блока аналитической панели
if([block useShadow]){
const CGFloat *c = CGColorGetComponents([block shadowColor].CGColor);
NSLog(@"Компоненты цвета тени блока: R:%f G:%f B:%f A:%f", c[0], c[1], c[2], c[3]);
NSLog(@"Значение прозрачности тени блока: %f", [block shadowOpacity]);
NSLog(@"Значения ширины тени блока: %f", [block shadowWidth]);
}
// Выводим информацию о фоне блока аналитической панели
if([block useBackground]){
const CGFloat *c = CGColorGetComponents([block backgroundColor].CGColor);
NSLog(@"Компоненты цвета фона блока: R:%f G:%f B:%f A:%f", c[0], c[1], c[2], c[3]);
}
// Выводим информацию о границах блока аналитической панели
if([block useBorder]){
const CGFloat *c = CGColorGetComponents([block borderColor].CGColor);
NSLog(@"Компоненты цвета границы блока: R:%f G:%f B:%f A:%f", c[0], c[1], c[2], c[3]);
NSLog(@"Ширина границы блока панели: %f", [block borderWidth]);
}
// Выводим информацию о скруглении углов границ блока аналитической панели
if([block useBorderRadius]){
NSLog(@"Радиус скругления углов границ: %f", [block cornerRadius]);
}
// Выводим информацию о градиенте блока аналитической панели
if([block useGradient]){
const CGFloat *c = CGColorGetComponents([block gradientColor].CGColor);
NSLog(@"Компоненты цвета градиента: R:%f G:%f B:%f A:%f", c[0], c[1], c[2], c[3]);
NSLog(@"Угол градиента: %f", [block gradientAngle]);
}
// Выводим размеры блока аналитической панели
if([block hasWidth])
NSLog(@"Ширина блока аналитической панели: %f", [block width]);
if([block hasHeight])
NSLog(@"Высота блока аналитической панели: %f", [block height]);
// Получаем массив атрибутов блока аналитической панели
NSDictionary *attributes = [block attributes];
// Выводим имя блока аналитической панели
NSLog(@"Имя блока аналитической панели: %@", [attributes valueForKey:@"name"]);
// Выводим описание, тип и ключ блока аналитической панели
if([block tag] != nil)
NSLog(@"Описание блока аналитической панели: %@", [block tag]);
if([block type] != nil)
NSLog(@"Тип блока аналитической панели: %@", [block type]);
if([block key] != nil)
NSLog(@"Ключ блока аналитической панели: %@", [block key]);
// Выводим количество блоков аналитической панели
NSLog(@"Количество блоков аналитической панели: %d", [[[block kap] compositeBlocks] count]);
// Создаем копию блока аналитической панели
APXMLParserObject *data = [block data];
APCompositeBlock *copy = [[APCompositeBlock new] autorelease];
[copy initWithParserObject:data kap:[block kap]];
// Создаем и устанавливаем справочник свойств
NSArray *valArray = [NSArray arrayWithObjects:@"string", [NSNumber numberWithBool:YES], [NSNumber numberWithDouble:42.42],
[NSNumber numberWithInt:42], nil];
NSArray *keyArray = [NSArray arrayWithObjects:@"stringKey", @"boolKey", @"doubleKey", @"intKey", nil];
NSMutableDictionary *props = [NSMutableDictionary dictionaryWithObjects:valArray forKeys:keyArray];
[copy setValue:props forKey:@"m_properties"];
// Выводим имя элемента блока аналитической панели
APXMLParserObject *obj = [copy propForKey:[[[copy objects][0] attributes] allValues][0]];
NSLog(@"Имя элемента блока аналитической панели: %@", [obj elementName]);
// Выводим значения свойств указанных типов
if([[copy properties] count] != 0){
if([copy hasPropForKey:@"stringKey"])
NSLog(@"Значение свойства строкового типа: %@", [copy stringPropForKey:@"stringKey"]);
NSLog(@"Значение свойства логического типа: %hhd", [copy boolPropForKey:@"boolKey"]);
NSLog(@"Значение свойства вещественного типа: %f", [copy doublePropForKey:@"doubleKey"]);
NSLog(@"Значение свойства целочисленного типа: %i", [copy intPropForKey:@"intKey"]);
}
} else {
NSLog(@"Блоки аналитической панели отсутствуют");
}
В результате в консоль среды разработки будет выведена информация о блоке аналитической панели:
Признак привязки блока к верхней границе окна: 1
Признак привязки блока к нижней границе окна: 1
Признак привязки блока к левой границе окна: 1
Признак привязки блока к правой границе окна: 1
Компоненты цвета фона блока: R:1.000000 G:1.000000 B:1.000000 A:1.000000
Компоненты цвета границы блока: R:0.788235 G:0.788235 B:0.788235 A:1.000000
Ширина границы блока панели: 1.000000
Ширина блока аналитической панели: 348.923077
Высота блока аналитической панели: 190.666667
Имя блока аналитической панели: Таблица
Тип блока аналитической панели: Table
Ключ блока аналитической панели: 7HBEWOKE7UKGM6VB
Количество блоков аналитической панели: 1
Имя элемента блока аналитической панели: prop
Значение свойства строкового типа: string
Значение свойства логического типа: 1
Значение свойства вещественного типа: 42.420000
Значение свойства целочисленного типа: 42
См. также: