2017-07-11 8 views
2

作成しているアプリの初期画面で、続行するには2つのオプション(登録&サインイン)が表示されます。画面の中央にはロゴがあり、上にはアプリの名前が表示されます。Swift 3 - すぐに2つの機能を実行する

バックグラウンドを複数の色に連続してフェードインしたいのですが、色が変わっているとき(常に変化しています)にボタンが機能しなくなるという問題があります。

私の現在のコード:

override func viewDidAppear(_ animated: Bool) { 
    randomColor() 
} 

@IBAction func registerButton(_ sender: UIButton) { 
    print("New user is registering") 
} 

@IBAction func signInButton(_ sender: UIButton) { 
    print("Returning user is signing in") 
} 

func randomColor() { 
    let possibleColors = [standardRed, standardAqua, standardBlue, standardPink, standardGreen, standardOrange, standardPurple, standardYellow] 
    let randomIndex = Int(arc4random_uniform(UInt32(possibleColors.count))) 
    let randomColor = possibleColors[randomIndex] 


    UIView.animate(withDuration: 3.0, delay: 0.0, options: .curveEaseInOut, animations: { 
     self.view.backgroundColor = randomColor 
    }, completion: { finished in 
     self.randomColor() 
    }) 
} 

// 'standardXXX' are just global variable UIColors 

は、私が「randomColor」関数は、それ自体開始し続けるため、他の機能が起動できないことを考えで正しいですか?

'randomColor()'が他のIBActionを使用できるようにしながら、それ自体を繰り返すことができるソリューションはありますか?

+0

デフォルトでアニメーション化するときに対話が無効になるためです。それを可能にするオプションがあります。 – Lumialxk

答えて

2

理由は、ユーザーの操作を許可していないためです。 .curveEaseInOut[.allowUserInteraction, .curveEaseInOut]に置き換えてください。

関連する問題