2010-08-03 9 views
4

J'ai un sous-classe UIView composé de plusieurs couches (principalement CAShapeLayers avec quelques CATextLayers). Le problème que j'ai est que si j'Animer le redimensionnement de la UIView à l'aide d'un bloc d'animation (beginAnimations, commitAnimations) et Restructurer les sous-couches dans le layoutSubviews substituée, alors les couches ne sont pas animées avec le UIView.Animation de UIView et de ses sous-couches

Ci-dessous mon code pour animer le cadre du UIView:

miniView.backgroundColor = [UIColor orangeColor]; 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0f]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationRepeatCount:MAXFLOAT]; 
[UIView setAnimationRepeatAutoreverses:YES]; 

miniView.frame = newFrame; 

[UIView commitAnimations]; 

Le problème est que la vue est bien animé, mais les sous-couches ne sont pas. Je peux voir la vue croître et rétrécir, mais les sous-couches se développent immédiatement et ensuite rester la nouvelle taille plus grande. Quelle est la meilleure façon de redimensionner les sous-couches d'une vue lorsque la vue est redimensionnée? Et comment puis-je faire en sorte que ceux-ci s'animent de la même manière avec la vue parente?

+0

Avez-vous déjà trouvé une réponse? J'ai le même problème que toi Noé. La solution fournie par Brandon est légèrement différente car il suffit de mettre à l'échelle les sous-couches dans le cadre de la couche au lieu de les redessiner à leur nouvelle taille pendant l'animation. –

Répondre

1

Je voudrais voir plus de code pour vraiment résoudre le problème, mais vous pouvez essayer d'animer la couche de miniView au lieu de sa vue. Au lieu d'utiliser l'animation UIKit, cela devrait être plus flexible une fois que vous en aurez pris connaissance.

+1

J'ai eu un problème similaire. Ce post m'a donné l'indice. Les animations UIView ne fonctionnent que sur les vues UIKit etc. Si vous voulez animer des objets CALayer, vous devez le faire en utilisant l'API CoreAnimation et non les méthodes UIView ... animées. –