既定では、.NET マルチプラットフォーム アプリ UI (.NET MAUI) アプリは、すべてのデバイスで安全な画面領域にページ コンテンツを自動的に配置します。 これはセーフエリアレイアウトガイドと呼ばれ、一部のiPhoneモデルでは、丸いデバイスコーナー、ホームインジケータ、センサーハウジングによってコンテンツがクリップされないようにします。
Important
.NET 10 では、 SafeAreaEdges プロパティ ( Layout、 ScrollView、 ContentView、 Borderでも使用できます) を使用して、安全なエリアの動作を正確に制御します。 iOS 固有の Page.UseSafeArea は既存のアプリ用に残りますが、新しいコードでは SafeAreaEdgesを優先する必要があります。
最新のセーフ エリア ガイダンス (.NET 10 以降)
SafeAreaEdges を使用してセーフ エリアの動作を選択する
SafeAreaEdges は、 SafeAreaEdgesから次の値を受け取ります: Default、 None、 Container、 SoftInput、および All。
すべての安全な領域内にコンテンツを保持する (バー、切り欠き、キーボードを避ける):
<ContentPage SafeAreaEdges="All"> <!-- content stays within safe area --> </ContentPage>端から端まで描画します (安全な領域の埋め込みなし):
<ContentPage SafeAreaEdges="None"> <!-- content can extend behind bars and notch --> </ContentPage>キーボード (ソフト入力) から外しますが、上/下のバー/切り欠きを許可します。
<ScrollView SafeAreaEdges="SoftInput"> <!-- content can go under bars/notch but avoids keyboard overlap --> </ScrollView>上下のバーや切り欠きから外しますが、キーボードの下で許可します。
<Grid SafeAreaEdges="Container"> <!-- content avoids bars/notch; may extend under keyboard --> </Grid>
既定値は Default であり、プラットフォーム規則によってオーバーライドされない限り、エッジ間の動作 ( None と同等) にマップされます。
C# でも SafeAreaEdges を設定できます。
using Microsoft.Maui;
using Microsoft.Maui.Controls;
// On a page
this.SafeAreaEdges = SafeAreaEdges.All;
// On a layout
myGrid.SafeAreaEdges = SafeAreaEdges.Container;
// Keyboard-aware
myScrollView.SafeAreaEdges = SafeAreaEdges.SoftInput;
現在のセーフエリアインセットの読み取り
実行時にページ上の現在のセーフエリアインセットを読み取るために、iOS 固有の構成 API を使用します。
using Microsoft.Maui.Controls.PlatformConfiguration;
using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;
var insets = On<iOS>().SafeAreaInsets(); // Microsoft.Maui.Thickness
ヒント
安全領域の差し込みセットは、実行時に変更される可能性があります (回転やステータス バーの変更など)。 インセットが変更されたときにレイアウトを更新します。
詳細については、以下を参照してください。
この iOS プラットフォーム固有では、セーフ エリア レイアウト ガイドが以前に無効になっており、 Page.UseSafeArea 添付プロパティを true に設定することで XAML で使用されている場合に有効になります。
<ContentPage ...
xmlns:ios="clr-namespace:Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;assembly=Microsoft.Maui.Controls"
ios:Page.UseSafeArea="True">
<StackLayout>
...
</StackLayout>
</ContentPage>
または、fluent API を使用して C# から使用することもできます。
using Microsoft.Maui.Controls.PlatformConfiguration;
using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;
On<iOS>().SetUseSafeArea(true);
Page.On<iOS> メソッドは、このプラットフォーム固有の実行が iOS でのみ行われると指定します。
Page.SetUseSafeAreaメソッドは、Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific名前空間で、セーフ エリア レイアウト ガイドを無効にするかどうかを制御します。
注
Layout クラスは、すべての iOS デバイスで安全な画面領域にコンテンツが配置されるようにするIgnoreSafeArea プロパティを定義します。 このプロパティは、trueやGridなど、任意のレイアウト クラスでStackLayoutに設定して、このプラットフォーム固有の同等の機能を実行できます。
.NET MAUI