2009-12-08 2 views
1

Il semble donc y avoir un problème avec l'animation des transformations de taille pour UIButtons. Plus précisément, si vous avez un bouton de type UIButtonTypeCustom, toutes les transformations de taille de trame se produisent instantanément. Les mouvements et autres animations se déroulent normalement.UIButton avec le bug de l'animation UIButtonTypeCustom

Est-ce que quelqu'un a une bonne solution pour cela? Je suis devinant que c'est parce que les boutons personnalisés contiennent des images, et quelque chose ne va pas quand UIView calcule ses transformations. Semble avoir trouvé le même problème, mais pas de solution de contournement.

Voici un exemple. L'origine de l'image passe doucement de 0.0.0.0 à 100.0.100.0 sur deux secondes, mais la taille passe instantanément à 200x200.

UIButton *tButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[tButton setBackgroundImage:tImage forState:UIControlStateNormal]; 
tButton.frame = CGRectMake(0.0, 0.0, 10.0, 10.0); 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationDuration:2.0]; 

tButton.frame = CGRectMake(100.0, 100.0, 200.0, 200.0); 

[UIView commitAnimations]; 
+0

En fait, le bogue commence à apparaître après l'appel de setBackgroundImage :, son type ne fait pas de différence. vous pouvez le tester en définissant la propriété de contenu de la couche du bouton à l'image désirée (vous aurez besoin #importer et ajouter QuartzCore.framework): tButton.layer.contents = (id) tImage. CGImage; tout en laissant son type défini sur UIButtonTypeCustom et en supprimant un appel à setBackgroundImage: – Russian

+0

@Russian - Intéressant ... Je me demande si le cadre du bouton s'anime réellement en douceur, mais l'image elle-même se redimensionne instantanément et se décolle juste. Je vais devoir tester ça. – DougW

Répondre

0

Le crédit va à davbryn pour cette réponse, mais au lieu de redéfinir le cadre que vous utilisez:

button.transform = CGAffineTransformMakeScale(1.5,1.5); 

Son pas aussi facile que l'aide d'un nouveau cadre afin que vous devrez jouer avec plus il mais il devrait vous faire pointer dans la bonne direction.