2017-09-04 13 views
0

私は正しく動作するカスタムアニメーションを作成したので、上からビューコントローラを追加しようとしています。しかし、追加されているビューコントローラの背景色は黒に設定されています。ここでは、透明にしたいので、下のビューコントローラを表示することができます。ここでSwift - 新しいViewControllerを追加している間にUIViewControllerを可視にします。(self.present経由で)

は、カスタムアニメーションを追加するためのコードです:

let vc = Global.sharedInstance.storyboard.instantiateViewController(withIdentifier: "AnimationViewControllerID") as! AnimationViewController 
      vc.view.backgroundColor = UIColor.clear 
     vc.personName = name 
     let begin = CGRect(x: 0, y: -vc.view.frame.height, width: vc.view.frame.width, height: vc.view.frame.height) 
     let end = CGRect(x: 0, y: 0, width: vc.view.frame.width, height: vc.view.frame.width) 
     self.present(vc, animated: false) {() -> Void in 
      vc.view.frame = begin 
      vc.view.alpha = 0.5 
      vc.view.backgroundColor = UIColor.clear 
      UIView.animate(withDuration: 1, animations: {() -> Void in 
       vc.view.frame = end 
      }, 
          completion: nil) 
     } 

私はクリアするためにView Controllerの背景色を設定するが、それでも、それは背景を透明にすることではないです試してみました。

+1

この手法(アニメーションで提示した後、プレゼンテーションが行われた後、アニメーション)限定されている(あなたが作ることができない、それインタラクティブ;外観メソッド 'viewDidAppear'が間違っている時に呼び出され、など) 。あなたが望むのはカスタムトランジションです。 'present'経由のカスタムトランジションの例については、https://stackoverflow.com/a/42213998/1271826またはhttps://stackoverflow.com/a/45764323/1271826を参照してください。 – Rob

+0

@Rob情報のおかげでサー。 –

答えて

2

提示されたビューコントローラのプレゼンテーションスタイルは、それに応じてに設定する必要があります。

現在のウィンドウに表示する場合はoverFullScreenに、表示コントローラのコンテキストの上に設定する場合はoverCurrentContextに設定します。

また、definesPresentationContexttrueに設定する必要があります。

vc.modalPresentationStyle = .overFullScreen 
vc.definesPresentationContext = true 
+1

正しいですが、.overCurrentContextもここで動作しますか? –

+0

@MikeAlter場合によっては、はい。私の答えを編集しました。 – the4kman

関連する問題