iOS - UIPinchGestureRecognizer и UIPanGestureRecognizer - Сброс

В моем приложении для масштабирования и панорамирования я использую вышеупомянутые распознаватели жестов. Это работает нормально. Я хочу кнопку, которая вернет изображение в исходное состояние. Это означает показать фактическое изображение или восстановить исходное состояние. Может кто-нибудь сказать мне, как этого добиться?

Код как ниже:

-(void)handlePanGesture:(UIPanGestureRecognizer*)recognizer

{
    CGPoint translation = [(UIPanGestureRecognizer*)recognizer translationInView:[self superview]];
    recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y);
    [(UIPanGestureRecognizer*)recognizer setTranslation:CGPointMake(0, 0) inView:[self superview]];
}

-(void)handlePinchGesture:(UIPinchGestureRecognizer*)recognizer
{
    static CGRect initialBounds;

    if (recognizer.state == UIGestureRecognizerStateBegan)
    {
        initialBounds = self.bounds;
    }
    CGFloat factor = [(UIPinchGestureRecognizer *)recognizer scale];

    CGAffineTransform zt = CGAffineTransformScale(CGAffineTransformIdentity, factor, factor);
    self.bounds = CGRectApplyAffineTransform(initialBounds, zt);
}

1 ответ

Основано на комментарии @borrden.

  1. Проверьте, совпадают ли текущий центр ImageView и оригинальный центр. Если нет, сбросьте центр ImageView. Вы можете добавить UIView.animation.., чтобы он выглядел хорошо.
  2. Измените размер imageView до исходного размера, установив для него значение CGAffineTransformIdentity. Это также может быть добавлено к UIView.animation.. в выше.
  3. Код. Внесите изменения в соответствии с вашими потребностями.

    UIView.animateWithDuration(0.2, delay: 0.0, options: .CurveEaseIn, animations: {
    
          //Move image back to center
          self.mainImageView.center = self.originalCenter!
          self.layoutIfNeeded()
    
          //Resize image to original
          self.mainImageView.transform = CGAffineTransformIdentity
    
          }, completion: nil
    )
    
Другие вопросы по тегам