【SwiftUI】Viewをセーフエリア外に拡張する(ignoresSafeArea)

Viewをセーフエリア外に拡張する .ignoresSafeArea() モディファイアについて解説します。
iOS14から使えるようになったモディファイアで、以前からあった .edgesIgnoringSafeArea() は deprecated(非推奨)となっています。

スポンサーリンク

環境

この記事の情報は次のバージョンで動作確認しています。

【Xcode】12.5RC
【Swift】5.4
【iOS】14.5
【macOS】Big Sur バージョン 11.5.2
スポンサーリンク

セーフエリア(Safe Area)について

iOS11以降では、特定機種に存在するノッチや画面の角丸、あるいは、OSのナビゲーションやステータスバーなどと干渉しない安全な領域を示すセーフエリアの概念があります。
開発者が作成するアプリの操作部は、原則セーフエリア内に配置する必要があります。

SwiftUIの標準の動作では、ほとんどのViewが自動でセーフエリア内に配置されます。

尚、iOS14からソフトウェアキーボードがセーフエリア外の扱いになりました。
これによりキーボードがアプリのコントロールと重なった時に自動で再配置されるようになっています。

セーフエリアについて1

セーフエリアについて2

セーフエリアについて3

スポンサーリンク

基本的な使い方

【引数】
edges
セーフエリアを拡張するエッジ(端)を指定します。

指定できる値には、上下左右を示す.top、.bottom 、.leading、.trailing の他に、縦方向に拡張する .vertical、 横方向に拡張する .horizontal、全方向に拡張する .all があります。
.top、.bottom 、.leading、.trailing については、複数の方向を [.top, .trailing] のようにセットで指定可能です。

引数無しの場合、.all(全方向に拡張) と同じになります。

使用例

基本的な使い方

スポンサーリンク

拡張領域の指定

第一引数に下記プロパティのいずれかを指定すると、"拡張可能な範囲"を変更できます。

.container
拡張範囲をデバイスのエッジのみに限定します。
表示領域を拡張するけどソフトウェアキーボードとは重ならないようにしたい場合に指定します。

.keyboard
拡張範囲をソフトウェアキーボードのみに限定します。
ソフトウェアキーボードが出た時に画面をずらしたくない場合に指定します。

.all
デバイスのエッジとソフトウェアキーボードの両方を拡張範囲とします。
未指定時のデフォルト値と同じです。

使用例

拡張領域の指定は文章にすると大変わかりにくいので、次のコードで実際に動作を確認してみると良いでしょう。

拡張領域の指定

スポンサーリンク

あわせて読みたい記事

【SwiftUI】Viewのフレームサイズ指定(frame)
(2021/09/12 更新)Viewのフレームサイズを指定する方法を解説します。フレームはレイアウトの基準となる枠で、実際のView表示サイズとは異なる場合があります。具体的な例を示すと、下の図の青背景の部分が元々のTextView...
【SwiftUI】ScrollViewの使い方
(2021/08/04 更新)縦横にスクロール可能なViewを生成するScrollViewの使い方を解説します。
【SwiftUI】TextFieldの使い方
(2020/09/26 更新)テキスト入力に使うTextField()の使い方を解説します。
スポンサーリンク
SwiftUI
カピ通信