0

Я использую CGAffineTransformMakeTranslation с UIPanGestureRecognizer для панорамирования UIView.CGAffineTransformMakeTranslation Движение

Принимает ли CGAffineTransformMakeTranslation дельта х и дельта y или абсолютное значение новой позиции? Вот что у меня есть:

- (void)swipeDetected:(UIPanGestureRecognizer *)recognizer 
{ 

    CGPoint newTranslation = [recognizer translationInView:self.view]; 
    self.navController.view.transform = CGAffineTransformMakeTranslation(newTranslation.x, 0); 
    ..... 
} 

Это работает слева направо, но не справа налево. Я уверен, что «перевод» означает дельта х и дельта y, а не абсолютное значение.

Любые предложения?

Благодаря

ответ

3

Настройка преобразования является немедленная операция, как это просто умножение матриц расположения представления.

Если вам нужно вернуться из текущее положение, вы можете сохранить преобразования к Ивар, и использовать обратное преобразование, то есть:

_currentTransform = CGAffineTransformMakeTranslation(newTranslation.x, 0);

и позже:

CGAffineTransform inverse = CGAffineTransformInvert(_currentTransform);

Если вы хотите удалить все преобразования, вы можете сделать self.transform = CGAffineTransformIdentity

Надеюсь, это поможет!