2017-04-04 10 views
0

私はログイン画面の背景を特定の色に設定しました。私はfirebaseを使用しており、認証を検出しなかった場合、ログインビューコントローラをインスタンス化して提示します。ビューの背景色は、ビューが表示された後に変更されますか?

最初に表示されるときは正しい色ですが、すぐに暗くなります。アルファが普通の100%に戻るような感じです。

ログアウトボタン(テーブルビュー内)で同じ2行のコードを使用すると、ビューは正しい色になり、変更されません。

必要に応じてさらに詳しい情報を提供できます。ありがとう。

if(FIRAuth.auth()?.currentUser == nil) { 
      let vc = self.storyboard?.instantiateViewController(withIdentifier: "firebaseLoginViewController") 
      self.navigationController?.present(vc!, animated: true, completion: nil) 
     } 

switch(indexPath.row) { 
     case 5: 
      let vc = self.storyboard?.instantiateViewController(withIdentifier: "firebaseLoginViewController") 
      self.navigationController?.present(vc!, animated: true, completion: nil) 
     } 
+0

viewControllerが複数回表示されているようです。 Xcodeのビュー階層をデバッグしてください。 – ron27

+0

'if(FIRAuth.auth()?. currentUser == nil)'はどこでチェックしましたか? –

答えて

1

ビューを表示すると、ビューの後ろのビューは、ビューが画面いっぱいになった後に削除されます。ビューに半透明の背景色がある場合は、他のビューが削除され、黒いウィンドウが表示されていることがわかります。

これは2通りの方法で修正できます。 1つ目は、明らかに背景色に100%のアルファを使うことです。しかし、目的に応じて半透明の外観を探している場合は、あなたはmodalPresentationStyleを見ることができます。あなたのケースでは、いくつかのオプションがありますが、私は最高だと思います。.overFullScreen

半透明の背景でviewControllerを表示する前に、このように設定します。

self.navigationController?.modalPresentationStyle = .overFullScreen 
+1

これはあなたの質問OPに対する答えです。また、ウェブページに類似したモーダル感のために、 'modalPresentationStyle = .CurrentContext'を使用することもできます。これは、 "古い" viewController上のviewControllerを表示しますが、すべての画面を占めるわけではありません。 –

関連する問題