2017-02-19 1 views
2

私はtwitter APIを使用して、実際のアプリをエミュレートするTwitterアプリを作成しようとしています。タイムラインビューでは、通常のナビゲーションバーがあり、ユーザーがユーザープロファイルをタップすると、プロファイルビューに透明バーが表示され、ユーザーのバナーイメージが表示されます。私は、ユーザープロファイルビューで、ナビゲーションバーを透明にするには、次のコードを使用:スイフト3:透明なナビゲーションバーを逆にするにはどうすればいいですか?

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default) 
self.navigationController?.navigationBar.shadowImage = UIImage() 
self.navigationController?.navigationBar.isTranslucent = true 

私は、プロファイルビューから戻ったときに私がいる問題があり、タイムラインのナビゲーションバーには、以下の(スクリーンショットめちゃめちゃになっています)。私はこれを推測しています。なぜなら、プロファイルビューのナビゲーションコントローラのナビゲーションバーのいくつかの側面を変更し、タイムラインビューに戻ったときに引き継がれたものです。

ナビゲーションバーの透明度を逆にして、ウインキーナビゲーションバーを修正するにはどうすればよいですか?タイムラインビューのコントローラーでは、次のコードを使用して逆転しようとしましたが、機能しません。透明ナビゲーションバー

Profile view with transparent navigation bar

Timelとの定期的なナビゲーションバー

Timeline view with regular navigation bar

プロファイルビューで

self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default) 
self.navigationController?.navigationBar.shadowImage = nil 
self.navigationController?.navigationBar.isTranslucent = false 

タイムラインビューINEは、同様のケースがあまりにも私に起こった

Timeline view with wonky navigation bar after returning from profile view

+0

返品時に実際の画像を色で設定しようとしましたか?たとえば、次のようなものです: 'self.navigationController?.navigationBar.setBackgroundImage(UIImage(ciImage:CIImage(color:UIColor.blue.ciColor)):.default)' – Losiowaty

答えて

2

プロファイルビューから戻った後、グラグラナビゲーションバーを表示します。後で、私は、適切なライフサイクルメトリックでナビゲーションアイテムの属性を変更していないことに気付きました。タイムラインビューコントローラーのviewWillAppearに不透明にして、タイムラインビューコントローラーから離れる前に透明にします(viewWillDisappear)。 それはそれに関連していますか?

+0

うーん、それはほとんど解決したようです。今私はちょうど画面がロードされた後約0.5秒まで、私のナビゲーションバーの色が現れないエフェクトの後で不思議なグリッチを得ていますが、私はちょっとそれを混乱させるつもりです! – Julian

+0

'viewWillAppear'で色を設定するとうまくいくかもしれません。それと幸運:) @ジュリアン – AtaerCaner

+0

@ジュリアンはそれが働くようになったのですか? – gbhall

0

@ジュリアン、私はあなたと同じ問題を抱えていました。私は赤色のナビゲーションバーでマスタービューを持っていて、詳細ビューのナビゲーションバーを透明にしたいと思っていました。私はそれを有効にすることができましたが、マスタービューに戻るときに同じ不具合が発生しました。ナビゲーションバーは1.5秒間透明になってから元の赤色に戻りました。私はナビゲーションバーをスタイリングすることでそれを解決することができませんでしたが、それを別の方法で修正することができました。それは望ましい解決策ではありませんが、私はそれで大丈夫です、今、私はとても多くの時間を要しました。

いいえ、私がやったことは、ImageViewを作成し、ナビゲーションバーの下に自動レイアウトでそろえました。ナビゲーションバーの高さは44ピクセルだったので、ImageViewのy位置は-44になりました。私はImageViewにナビゲーションバーの赤色を与えました。そのため、1.5秒間透明だったときに、ユーザーは実際にナビゲーションバーの色の代わりにImageViewを見ました。

こちらもお役に立てば幸いです。

関連する問題