2013-05-14 3 views
2

Je souhaite animer la mise à l'échelle d'un UIView et de tout son contenu de manière non bloquante. Actuellement, je fais ...Mise à l'échelle animée UIView non bloquante

[UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.1]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
      CGAffineTransform transform = CGAffineTransformMakeScale(1.1,1.1); 
      self.view.transform = transform; 
    [UIView commitAnimations]; 

Cependant, il est blocage. Je préfère utiliser quelque chose comme ...

[UIView animateWithDuration:0.2 
        animations:^{ 
       CGAffineTransform transform = CGAffineTransformMakeScale(1.1,1.1); 
       self.view.transform = transform; 
        }]; 

... mais animateWithDuration ne pas travailler avec la transformation CALayer/CGAffineTransform. Comment puis-je réaliser la même animation sans bloquer quoi que ce soit?

+0

peut-être juste changer manuellement la taille et l'origine du cadre des vues, au lieu d'utiliser une transformation, un peu plus de travail pratique, mais cela devrait fonctionner – Fonix

Répondre

5

essayez d'utiliser:

[UIView animateWithDuration:0.2 
animations:^{ 
    CGAffineTransform transform = 
    CGAffineTransformScale(CGAffineTransformIdentity, 2.0, 2.0); 
self.view.transform = transform; 
}]; 

Il suffit d'ajouter une note utile à cette grande réponse, presque toujours vous voulez activer rastérisation, il semble lisse

self.view.layer.shouldRasterize = YES; 
[UIView animateWithDuration:0.2 
animations:^{ 
    CGAffineTransform transform = 
    CGAffineTransformScale(CGAffineTransformIdentity, 0.5, 0.5); 
self.view.transform = transform; 
}];