【SwiftUI】ハーフモーダルを実装してみた

SwiftUIでハーフモーダルを実装してみました。

ボタンを押すと下からニョキッとモーダルが出てくるアプリです。

OKを押すとモーダルを閉じて元の画面に戻ります。

Storyboardでアプリを開発しているときにモーダルを使いたくて、FloatingPanelを使っていました。

SwiftUIだとかなりシンプルなコードでモーダルが実装できますね。

(ただ、FloatingPanelと違って、半分だけ表示することができない?ようです。ハーフ?モーダルと言えるのかな。)

コードは以下のとおり。

左側の画面です。

ボタンが押されたらシートフラグをtrueにして、モーダルを表示します。

モーダルが閉じられるタイミングでカウンターをプラスしてカウントしています。

カウンター値が3、つまり3回シートが表示されたらボタンを押せないようにしています。

右側の画面です。

@EnvironmentのpresentationModeの変数を宣言します。

ボタンが押されたらこの変数のwrappedValueをdismissする事でモーダルを閉じます。

以下の本を参考にしたのですが、分かりやすくて良い感じでした。

オススメの本です。

詳細! SwiftUI iPhoneアプリ開発入門ノート iOS 13 + Xcode11対応 (日本語) 単行本 – 2019/12/21