web-dev-qa-db-fra.com

iOS - Transition / animation de changement de couleur en douceur

Je veux avoir une transition de couleur douce qui traverse tout le spectre (c'est-à-dire rouge, bleu, vert, jaune, orange, etc.)

Vous voulez également pouvoir avoir des transitions douces de couleurs dans un spectre spécifique (c'est-à-dire tous les rouges).

Existe-t-il des algorithmes/fonctions/formules récursives simples qui peuvent aider à simplifier ce processus?

21
JimmyJammed

Une façon possible de le faire est d'appliquer une animation de couleur d'arrière-plan sur le calque de la vue.

Maintenant, pour traverser tout le spectre, vous devez travailler sur des combinaisons de trois couleurs.

La meilleure façon d'y parvenir est d'utiliser "Hue".

[[UIColor alloc] initWithHue: 135/360.0f saturation: 1 luminosité: 1 alpha: 1]

Vous devez maintenant itérer pour toutes les valeurs de teinte et vous obtiendrez la transition en douceur qui traverse tout le spectre.

Exemple de code:

  1. faire une variable locale

int _currentColorHue = 0;

  1. appel récursif pour changer la couleur d'arrière-plan.

- (vide) animateMyView {

[UIView animateWithDuration:0.01 animations:^{
    self.view.layer.backgroundColor = [[UIColor alloc] initWithHue:_currentColorHue/360.0f saturation:1 brightness:1 alpha:1].CGColor;
} completion:^(BOOL finished)
{
    _currentColorHue++;
    if (_currentColorHue > 360)
    {
        _currentColorHue = 0;
    }
    [self animateMyView];
}];
}

Vous pouvez arrêter l'animation selon votre utilisation.

3
Lakhpat meena

Une façon très simple d'y parvenir serait d'utiliser un bloc d'animation UIView.

[UIView animateWithDuration:1.0 animations:^{
    view.backgroundColor = [UIColor redColor];
}];

Cela interpolera entre la couleur d'arrière-plan précédente de view et le rouge pendant 1 seconde.

Swift:

UIView.animate(withDuration: 1.0) { 
    view.backgroundColor = .red
}
50
daltonclaybrook

Utilisez le code suivant pour la transition des couleurs dans iOS, il vous donne diverses options configurables:
1) Délai avant de démarrer l'animation
2) Rappel à la fin de l'animation
3) Options d'animation

[UIView animateWithDuration:1.0 delay:0.2 options:0 animations:^{
        view.backgroundColor = [UIColor greenColor];
    } completion:^(BOOL finished)
     {
         NSLog(@"Color transformation Completed");
     }];

Pour une description détaillée des différentes animations, veuillez visiter:
Tutoriel UIView pour iOS: Comment utiliser l'animation UIView

2
Aamir