2016-07-14 2 views
0

Je crée une application interactive qui est censée afficher un UILabel d'une couleur bleue qui doit disparaître quand un bouton donné est pressé. Comme nous continuons à appuyer sur le bouton, la couleur de l'étiquette devrait s'estomper. J'ai essayé de créer un UIColor personnalisé et de changer sa luminosité mais ce n'est pas vraiment efficace. Il se fane pour quelques pressions sur les boutons, après quoi la couleur ne change pas du tout.Fading de l'UIColor avec un boutonPressez

Quelle est la meilleure façon d'atteindre mon objectif? Toute aide serait appréciée. C'est une tâche simple mais qui devient ennuyante sans raison.

Voici le code pour ce que je fais. "tube" est le UILabel dont la couleur d'arrière-plan est censée disparaître à mesure que l'int "count" continue d'augmenter.

var intensity : CGFloat = 0.3   
@IBAction func fa(sender: AnyObject) { 

    let five = UIColor(hue: 0.61, saturation: 0.31, brightness: 0.76, alpha: intensity) 
    let four = UIColor(hue: 0.61, saturation: 0.31, brightness: 0.65, alpha: intensity) 
    let three = UIColor(hue: 0.61, saturation: 0.31, brightness: 0.59, alpha: intensity) 
    let two = UIColor(hue: 0.61, saturation: 0.31, brightness: 0.53, alpha: intensity) 
    let one = UIColor(hue: 0.61, saturation: 0.31, brightness: 0.37, alpha: intensity) 



    count += 1 

    if (count == 0){ 
     tube.backgroundColor = UIColor(red: 109, green: 132, blue: 180, alpha: 0.2) 
    } 
    else if (count == 1){ 
     tube.backgroundColor = one 
     print("one") 
    } 

    else if (count == 2){ 
     tube.backgroundColor = two 
     print("two") 
    } 

    else if (count == 3){ 
     tube.backgroundColor = three 
     print("three") 
    } 

    else if (count == 4){ 
     tube.backgroundColor = four 
    } 

    else if (count == 5){ 
     tube.backgroundColor = five 
    } 
    else { 
     tube.backgroundColor = UIColor(red: 109, green: 132, blue: 180, alpha: 0.2) 
    } 
+0

Vous ne pouvez pas aider sans voir le code. – Feldur

+0

@Feldur vient de le poster! :) –

Répondre

0

En supposant que l'arrière-plan ViewController est blanc, vous pouvez effacer la couleur de fond par la décoloration en fait soit sur le bouton lui-même ou la valeur alpha de la couleur.

Pour modifier l'opacité du bouton, utilisez le code suivant:

if tube.layer.opacity > 0 { 
    tube.layer.opacity -= 0.1 
} 

Si vous voulez effacer la couleur à la place, vous devez extraire les valeurs RVB (voir this answer) de la couleur précédente et changer son alphaValue en le recréant.

+0

a rendu la vie si facile! Merci Monsieur! –