CorePlot масштабирует оси независимо с мультитач - PullRequest
2 голосов
/ 16 июля 2011

У меня есть приложение для iPhone с графиком CorePlot.Я бы хотел, чтобы пользователь мог увеличивать и уменьшать масштаб графика, аналогично функциональности по умолчанию, за исключением одного:

  • Когда пользователь сжимает по горизонтали -> масштабировать ось X.
  • По вертикали -> масштабирование по оси Y.
  • По диагонали -> масштабирование по обеим осям.

Как реализовать эту функцию?Любые предложения будут оценены.

1 Ответ

3 голосов
/ 16 июля 2011

Как показывает Феликс Хазин в своем ответе .

Я делаю это, настраивая PlotSpace

Код в его ответе.

Для фактического управления вертикой / диагональными / горизонтальными жестами.

1 Создать UIPinchGestureRecognizer

    UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc]
                                                      initWithTarget:self action:@selector(handlePinchGesture:)];
            pinchGesture.delegate = self;
            [graphView addGestureRecognizer:pinchGesture];
            [pinchGesture release];

EDIT

2 Реализация метода handlePinchGesture.

-(IBAction)handlePinchGesture:(UIPinchGestureRecognizer *)sender {

    switch (sender.state) {
        case UIGestureRecognizerStateBegan:
            //Store y and x coordinates of first and second touch
            break;

            case UIGestureRecognizerStateChanged:
            //check y and x coordinates of two finger touches registered in began state
            //to calcualte the actual pinch type:

            //Use scale property to find out if the pinch is zoom in or out

            if([sender scale] < 1) 
                NSLog(@"Zoom out");
            if([sender scale] > 1)
                NSLog(@"Zoom in");

            break;

        default:
            break;
    }
}
...