添付画像のようなダイアログをSwiftにて実現したいのです。
ダイアログ以外の領域を選択不可にし、下の画面が透けているUI。
NavigationControllerとTabberControllerを使用時にうまくいきません。
TabberControllerが選択できてしまいます。
おそらく上に重ねているViewの高さがおかしいと思うのですが、わかる方おられますでしょうか。
試したコードは下記となります。
・表示させるViewControllerのダイアログ表示時の処理
let infomationDialog:CustomDialogView = UINib(nibName: "CustomDialogView", bundle: nil).instantiate(withOwner: self,options: nil)[0] as! CustomDialogView // ダイアログ外の背景を暗く半透明に変更 let viewColor = UIColor.black infomationDialog.backgroundColor = viewColor.withAlphaComponent(0.85) infomationDialog.dialogBaseView.layer.cornerRadius = 5.0 // 貼り付ける // self.view.addSubview(infomationDialog) self.navigationController!.view.addSubview(infomationDialog)
・カスタムダイアログクラス
class CustomDialogView: UIView { @IBAction func closeButtonClicked(_ sender: UIButton) { self.removeFromSuperview() } }
CustomDialogViewのレイアウトはxibファイルにて設定しています
コメントアウトしているself.view.addSubview(infomationDialog)にて実装すると
ナビゲーションエリアとタブエリアの両方選択できてしまいました。
self.navigationController!.view.addSubviewにするとナビゲーションエリアは選択できませんが、タブエリアは選択できてしまいます。
(おそらくナビゲーションエリア分だけ、重ねているViewが上にずれたため、画面下部が選択できてしまっているように見えます。)
お手数ですがよろしくお願いいたします。
※追記
添付画像はLineアプリの画像であり、私が実装したものではありません。
例として、このようなダイアログを実装したいというものです。
記載している私のコードで実装した場合、スヌーピーの部分が暗くなりません。
そして選択できてしまいます。
正しいかわかりませんが、ナビゲーションエリアとステータスバーの高さ分だけ
上に重ねているViewの高さが画面下部に足りていないように見えます。
実装後のイメージを追加します。
タブ部分が選択できてしまいます。
追加
指摘後追加
回答2件
あなたの回答
tips
プレビュー