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];
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
@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