2017-06-28 12 views
0

私はすべての私たちに知られているアニメーションを使っています。ナビゲーションバーの背景イメージを少し変更してアニメーションして半透明(デフォルト)から(青のテーマ)に変更します。アニメーションでナビゲーションバーの背景イメージを変更する方法は?

アニメーションはうまくいかなかったが、ナビゲーションバーの背景画像が正常に変更された理由はわからない!

アイデア?

+0

あなたがイメージなしだけで背景画像を設定している色を変更することのないコードがありません。 –

+0

@NiravD更新 –

答えて

5

アニメーションブロック内でlayoutIfNeeded()に電話する必要があります。

このコードは、私のために働いた背景画像を変更するための

UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseOut, animations: { 
    self.navigationController?.navigationBar.barTintColor = .blue 
    self.navigationController?.navigationBar.layoutIfNeeded() 
}, completion: nil) 

更新:

let animation = CATransition() 
animation.duration = 0.5 
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut) 
animation.type = kCATransitionFade 

navigationController?.navigationBar.layer.add(animation, forKey: nil) 

UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseOut, animations: { 
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: "your-image-name"), for: .default) 
}, completion: nil) 
+0

ありがとうございますが、何も起こりませんでした。 ':( –

+1

'backgroundImage'を変更する必要がありますか、上のサンプルコードのように色を変更することはできますか?私は今調査する時間がありませんが、ここではこの問題に対する明らかなObjective-Cの解決策です画像を変更する:https://stackoverflow.com/questions/10823068/how-can-i-animate-the-ininavigationbar-background-change-on-uiviewcontroller-push – Hodson

+0

「背景画像」、そしてもう1つは客観的な答え-Cはうまくいかなかった! –

関連する問題