2013-06-20 8 views
0

В моем приложении для масштабирования и панорамирования я использую вышеуказанные распознаватели жестов. Это работает нормально. Я хочу кнопку, которая вернет изображение в исходное состояние. Это означает отображение фактического изображения или возврат в исходное состояние. Может ли кто-нибудь сказать мне, как это сделать?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); 
} 
+0

Установить центр изображения обратно к оригиналу, и установить преобразование в 'CGAffineTransformIdentity' и вы сделали. Или есть какая-то другая проблема, о которой вы не говорите? – borrrden

+0

На самом деле вы делаете это странным образом. Почему вы используете ApplyTransform вместо того, чтобы просто устанавливать свойство преобразования изображения? – borrrden

+0

@borrrden, можете ли вы предоставить мне фактический код для его реализации. – Satyam

ответ

0

на основе @ borrden замечании.

  1. Проверьте, совпадают ли текущий центр ImageView и исходный центр. Если не сбросить центр ImageView. Вы можете добавить UIView.animation .., чтобы он выглядел хорошо.
  2. Изменить размер изображенияПерейдите к исходному размеру, установив его на 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 
    ) 
    
Смежные вопросы