Переместить основной график по оси x в последнюю точку - PullRequest
2 голосов
/ 01 октября 2011

Мой основной график графика в моем приложении для iPhone выглядит хорошо. Тем не менее, я не могу понять одну вещь. Как я могу заставить график прокручиваться до конца его оси x после загрузки вида, а не начинать с начала координат? Я хотел бы, чтобы последняя точка данных на оси х была видимой, когда появится график. Как?

Я видел plotSpace: willDisplaceBy: метод делегата, который «близок» к тому, что мне нужно, но я должен быть в состоянии указать графику сместиться к концу своей оси x, когда его представление загружается. Я не нашел соответствующего примера кода для основного графика, чтобы сделать это.

Ответы [ 2 ]

7 голосов
/ 01 октября 2011

Вам необходимо установить xRange пространства графика, чтобы была видна последняя точка. Если вы знаете конечное значение и длину диапазона, который вы хотите видеть, вы можете сделать что-то вроде этого:

CPTXYPlotSpace *plotSpace = graph.defaultPlotSpace;
plotSpace.xRange = [CPTPlotRange rangeWithLocation:CPTDecimalFromDouble(end - length)
                                            length:CPTDecimalFromDouble(length)];

В примере предполагается, что желаемая длина положительна, а ваши значения удваиваются. Конечно, вы можете выполнять вычисления, используя значения NSDecimal, если это необходимо.

0 голосов
/ 01 октября 2011

используйте этот метод:

-(CPPlotRange *)plotSpace:(CPPlotSpace *)space willChangePlotRangeTo:(CPPlotRange *)newRange forCoordinate:(CPCoordinate)coordinate
{
    if (coordinate == CPCoordinateY) {
        CPPlotRange *maxRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(0.0f) length:CPDecimalFromFloat(6.0f)];
        CPPlotRange *changedRange = [[newRange copy] autorelease];
        [changedRange shiftEndToFitInRange:maxRange];
        [changedRange shiftLocationToFitInRange:maxRange];
        newRange =  changedRange;
    }
    return newRange;

}
...