J'ai une sous-classe UITableViewCell
qui dessine dans une méthode drawRect:. Le rectangle entier est personnalisé, y compris l'arrière-plan. J'ai été capable d'obtenir des cellules très complexes tout en gardant le défilement très lisse.Personnalisé UITableViewCell et animation sur setSelected: animé:
Mon problème: J'appelle le [table deselectRowAtIndexPath:path animated:YES];
chaque fois que la vue apparaît, afin de se conformer au HIG d'Apple. Cependant, aucune animation ne se produit. Cela fonctionnait quand j'avais une vue personnalisée (créée avec des sous-vues) qui était transparente (donc l'arrière-plan d'Apple apparaîtrait ci-dessous), bien sûr. Maintenant non.
Mon drawRect: est appelé une fois pendant le "temps d'animation", environ à mi-chemin. Je pense que cela se produit parce que c'est l'animation de la propriété en surbrillance de la cellule de 1 à 0 et il s'aligne sur 0 quand il descend en dessous de 0.5.
Comment puis-je animer cette transition? Ma conjecture serait d'utiliser le beginAnimations habituel: etc. et animer un champ de virgule flottante personnalisé dans mon objet de cellule de 1 à 0. Appelera-t-il drawRect:
à plusieurs reprises pour animer?
Mise à jour J'ai réussi à obtenir ce qui fonctionne presque. J'ai surchargé setSelected: animé: comme ceci:
- (void) setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:NO];
if (animated) {
[CATransaction begin];
CATransition* animation = [CATransition animation];
animation.type = kCATransitionFade;
animation.duration = 0.6;
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[view.layer addAnimation:animation forKey:@"deselectRow"];
[CATransaction commit];
}
}
Cela fonctionne parfaitement si la vue de la table est à l'écran. Mais si je retourne à la vue de la table depuis la navigation (arrière), au lieu de passer de sélectionné à non sélectionné, il passe de invisible à non sélectionné. Qu'est-ce qui peut causer ça?
Alors, comment votre implémentation de 'setSelected: animé:' 'dans votre sous-classe UITableViewCell' regarder? –
Ma question est fondamentalement comment coder cela :) – mips
Vous auriez besoin de surcharger la méthode, pour éviter d'appeler le code défini sur la super classe, et créer votre propre animation. Si vous ne savez pas comment animer Google comment le faire. – vfn