2017-12-17 10 views
2

私は6つのボタンのグループを持っています。ひとつが押されると(プログラム的に)、私はそれを明るくしてから消したいと思います。そこでlightUp(ボタン:UIButton)という関数を作成しました。私はまた、ボタンごとに2つのイメージを持っています - 点灯と消灯。私はデフォルトのunlitからlitへ行くことができますが、これまでは、ボタンを最初に点灯させようとする前に消灯して消灯させることが問題でした。下のコードでは、ボタンはまったく点灯しません。UIButtonトランジション

func lightUp(button: UIButton){ 

    button.setImage(UIImage(named: padArrayOn[button.tag]), for: .normal) 

     UIView.transition(with: button, duration: 0.4, options: .transitionCrossDissolve, animations: { 
      button.setImage(UIImage(named: self.padArrayOff[button.tag]), for: .normal) 
     }) { (bool) in 
      self.playSequence() 
     } 
} 

答えて

1

2つのトランジションを設定します。おそらく最初の完了ハンドラで2番目の?

func lightUp(button: UIButton){ 
     UIView.transition(with: button, duration: 0.2, options: .transitionCrossDissolve, animations: { 
      button.setImage(UIImage(named: padArrayOn[button.tag]), for: .normal) 
      }, completion: {_ in 
       UIView.transition(with: button, duration: 0.2, options: .transitionCrossDissolve, animations: { 
        button.setImage(UIImage(named: self.padArrayOff[button.tag]), for: .normal) 
        }, completion: { _ in 
         self.playSequence() 
        } 
     )}) 
} 
0

私が正しくあなたを理解している場合、あなたは、ボタンを点灯します(多分背景を変更)して、それがフェードアウトする必要があります。

あなたはこのような何か試すことができます。

func lightUpAndFadeOut(button: UIButton){ 
    UIView.animate(withDuration: 2) { 
     button.backgroundColor = UIColor.red 
    } 
    UIView.animate(withDuration: 5) { 
     button.alpha = 0 
    } 
} 

すべてのボタンの呼び出し、この機能を、それは次のようになります。

lightUpAndFadeOut(button: sender as! UIButton) 

は正しいですか?

+0

あなたの回答は、私が探していたものと同様の効果を作り出します。ありがとう!しかし、私は自分のボタンにイメージを使用しているので、全く同じではありません。 – squarehippo10

関連する問題