Основной сюжет: Тиковые интервалы - PullRequest
0 голосов
/ 07 февраля 2012

Я использую Core Plot в iOS-приложении и хочу отформатировать шаги оси. Все, что я получаю, это шаги 0,5, и я не знаю, что еще изменить. Мой тик Локации должны быть на 5, 10, 15 и 20.

Вот код, который рисует мою ось:

-(void) addAxis{

    // Create grid line styles
    CPTMutableLineStyle *majorGridLineStyle = [CPTMutableLineStyle lineStyle];
    majorGridLineStyle.lineWidth = 1.0f;
    majorGridLineStyle.lineColor = [[CPTColor whiteColor] colorWithAlphaComponent:0.75];

    NSSet *majorTickLocations = [NSSet setWithObjects:[NSDecimalNumber zero],
                                 [NSDecimalNumber numberWithUnsignedInteger:5],
                                 [NSDecimalNumber numberWithUnsignedInteger:10],
                                 [NSDecimalNumber numberWithUnsignedInteger:15],
                                 [NSDecimalNumber numberWithUnsignedInteger:20],
                                 nil];

    // Create axes
    CPTXYAxisSet *axisSet = (CPTXYAxisSet *)self.graph.axisSet;
    CPTXYAxis *x = axisSet.xAxis;
    {
        x.labelingPolicy = CPTAxisLabelingPolicyLocationsProvided;
        x.tickDirection = CPTSignNone;
        x.majorTickLocations = majorTickLocations;
        x.labelOffset = 6.0;
        x.labelRotation = M_PI/2;
        x.visibleRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(19.0f)];
        x.gridLinesRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(30.0f)];
        x.title = @"Jahre";
        x.titleOffset = 35.0f;
        x.titleLocation = CPTDecimalFromFloat(x.visibleRange.lengthDouble / 2.0);
        x.plotSpace = self.barPlotSpace;
    }

    CPTXYAxis *y = axisSet.yAxis;
    {
        y.labelingPolicy = CPTAxisLabelingPolicyLocationsProvided;
        y.majorTickLocations = majorTickLocations;
        y.minorTicksPerInterval = 0;
        y.preferredNumberOfMajorTicks = 8;
        y.majorGridLineStyle = majorGridLineStyle;
        y.axisLineStyle = nil;
        y.majorTickLineStyle = nil;
        y.minorTickLineStyle = nil;
        y.labelOffset = 10.0;
        y.visibleRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(30.0f)];
        y.gridLinesRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(18.5f)];
        y.title = @"Sparbetrag";
        y.titleOffset = 40.0f;
        y.titleLocation = CPTDecimalFromFloat(y.visibleRange.lengthDouble / 2.0);
        y.plotSpace = barPlotSpace;
    }

    // Set axes
    self.graph.axisSet.axes = [NSArray arrayWithObjects:x, y, nil];
}

Ответы [ 2 ]

3 голосов
/ 08 февраля 2012

Нашли решение: применение темы меняет живописное поведение сюжета.Если я не применяю тему - все хорошо.

Для этого не очень интуитивно понятно.Я ожидаю, что тема только меняет цвета или что некоторые аспекты могут быть переопределены.

0 голосов
/ 08 февраля 2012

Этот код должен работать нормально - у вас получатся галочки и метки 0, 5, 10, 15 и 20. Настройки для visibleRange и gridLinesRange могут быть неправильными - оставьте их по умолчанию nil, чтобы оси и линии сетки расширяли всю ширину и высоту области графика.

Если вы хотите изменить числовой формат меток, задайте для labelFormatter новый объект NSNumberFormatter, настроенный для предоставления желаемого числового формата.

...