遷移前のViewを透過して表示
下の画面を透かして表示させるのは遷移先の画面背景をclearにすればいけると思ってましたが一つ設定が必要でした。
ダメだったやつ
初期画面
初期画面のUIViewControllerで以下のように普通に遷移をする。
let vc = SecondViewController()
self.present(vc, animated: true, completion: nil)
わかりやすいようにviewの色を緑にしておく
self.view.backgroundColor = .green
遷移先画面
背景を透明にしたら緑がみえるはず!
self.view.backgroundColor = .clear
結果
青いviewはXib上で配置したものです。遷移できていることは確認できますが、背景を透明にしたのに関わらず緑じゃない!
解決策
遷移する前の画面でmodalPresentationStyleの設定を.overCurrentContextで入れてあげればいけました。
let vc = SecondViewController()
vc.modalPresentationStyle = .overCurrentContext
self.present(vc, animated: true, completion: nil)
コード
遷移前の画面
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .green
}
override func viewDidAppear(_ animated: Bool) {
let vc = SecondViewController()
//こいつを入れる!
vc.modalPresentationStyle = .overCurrentContext
self.present(vc, animated: true, completion: nil)
}
}
遷移後の画面
上のViewを閉じる時はdismissで閉じられます。Timerつけて閉じるテストしてました。
class SecondViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .clear
Timer.scheduledTimer(withTimeInterval: 3, repeats: false){(_) in
self.dismiss(animated: true, completion: nil)
}
}
}