CorePlot: текстовые метки XAxis с конфликтом labelingPolicy

Почему labelingPolicy, отличный от CPTAxisLabelingPolicyNone, не найден в строковых метках???

x.labelingPolicy = CPTAxisLabelingPolicyNone;

введите здесь описание изображения

Я хочу этот GRIDLineStyle, но с моими текстовыми метками:

x.labelingPolicy = CPTAxisLabelingPolicyFixedInterval

введите здесь описание изображения

Я завершаю xAxisLabels с помощью этого кода:

NSMutableArray *labels = [[NSMutableArray alloc] initWithCapacity:[labelsAxisX count]];
    int idx = 0;
    for (NSString *product in labelsAxisX)
    {
        CPTAxisLabel *label = [[CPTAxisLabel alloc] initWithText:product textStyle:x.labelTextStyle];
        label.tickLocation = CPTDecimalFromInt(idx);
        label.offset = 5.0f;
        [labels addObject:label];
        [label release];
        idx++;
    }

    x.axisLabels = [NSSet setWithArray:labels];
    [labels release];

person Davidin073    schedule 25.05.2012    source источник


Ответы (1)


При использовании политики маркировки CPTAxisLabelingPolicyNone вам необходимо указать расположение делений (основное и/или второстепенное) в дополнение к созданию меток. Если вы предпочитаете использовать политику маркировки с фиксированным интервалом, вы можете создать собственный модуль форматирования чисел для оси, который возвращает ваши текстовые метки вместо чисел.

Вот пример, адаптированный из демонстрации политики маркировки в примере приложения Plot Gallery:

NSMutableSet *tickLocations = [NSMutableSet set];
for ( NSUInteger loc = 0; loc < labelsAxisX.count; loc++ ) {
    [tickLocations addObject:[NSDecimalNumber numberWithUnsignedInteger:loc]];
}
axis.majorTickLocations = tickLocations;

Места второстепенных галочек работают так же.

person Eric Skroch    schedule 25.05.2012
comment
Как?? Я изменил свой пост с помощью кода, который я использую для заполнения массива меток.... но я не знаю, как решить мою проблему... - person Davidin073; 25.05.2012
comment
Я хочу сделать то же самое: использовать политику фиксированной ширины, отражающую переменные данные с настраиваемыми метками. В моем случае месяцы. Каждый месяц может иметь переменную # данных; но я хочу, чтобы месячные интервалы были фиксированными (а не переменными, как в ручной политике). Как я могу заменить номера фиксированного интервала на NSStrings (за соответствующий месяц)? ‹br/› Ссылка: [ссылка] stackoverflow.com/posts/12631504/edit -отправить/ - person Frederick C. Lee; 29.09.2012
comment
Вы можете реализовать метод делегата -axis:shouldUpdateAxisLabelsAtLocations:. Используйте предоставленный набор местоположений для создания собственных этикеток. - person Eric Skroch; 29.09.2012