2017-07-11 14 views
0

別のビューに切り替えてメインビューに戻ったときに、点滅しているアニメーションが機能しなくなったことがわかりました。タップすると他のビューに移動し、ボタンを押すとメインビューに戻ります。Swift - 表示切り替え時にアニメーションが機能しない

点滅アニメーションの場合:

import Foundation 

輸入のUIKit

延長UILabelにそれを戻すためのボタンの{

func startBlink() { 
    UIView.animate(withDuration: 0.8, 
        delay:0.0, 
        options:[.autoreverse, .repeat], 
        animations: { 
        self.alpha = 0 

    }, completion: nil) 
} 

func stopBlink() { 
    alpha = 1 
    layer.removeAllAnimations() 
} 

}

アクションここに私のコードですメイン画面:

点滅アニメーションを開始
@IBAction func mainMenuTapped(_ sender: Any) { 

    performSegue(withIdentifier: "EndToMain", sender: self) 

} 

メインビューコード:すべての助けを

@IBOutlet weak var tapToPlayLabel: UILabel! 




override func viewDidLoad() { 
    super.viewDidLoad() 



    tapToPlayLabel.startBlink() 

} 

ありがとう!

+0

そのstartBlick機能上のブレークポイントを置きます。メインコントローラーとセグをするときに呼び出されますか? –

+0

いいえ、メインコントローラに接続するときには呼び出されません。ビューがロードされたときに呼び出されます。だから、それがメインコントローラに戻ったとき、それは呼び出されます。 – Andy

+0

ボタンをアニメートしたい場合は、ビューが表示されますか?はいの場合は、アニメーションコーディングを呼び出すだけです。ViewDidAppear –

答えて

0

iOS UIViewライフサイクルを見て、どのメソッドが呼び出されたかを理解してください。

は、のviewDidLoadの外にtapToPlayLabel.startBlink()を取ると、このようなどちらかviewDidAppearまたはviewWillAppearにそれを置く:元のビューに切り替えたときに倍のUIViewアニメーションカスタムメソッドの

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    tapToPlayLabel.startBlink() 
} 
0

大半は動作しません。その作業をするには、そのカスタムアニメーションに関連したいくつかの初期値を割り当てる必要があります。ここで

は一例です:

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    self.tapToPlayLabel.alpa = 20 
    self.tapToPlayLabel.layoutIfNeeded() 
    self.tapToPlayLabel.startBlink() 
} 
関連する問題