次の方法で共有


iOS でセーフ エリア レイアウト ガイドを有効にする

既定では、.NET マルチプラットフォーム アプリ UI (.NET MAUI) アプリは、すべてのデバイスで安全な画面領域にページ コンテンツを自動的に配置します。 これはセーフエリアレイアウトガイドと呼ばれ、一部のiPhoneモデルでは、丸いデバイスコーナー、ホームインジケータ、センサーハウジングによってコンテンツがクリップされないようにします。

Important

.NET 10 では、 SafeAreaEdges プロパティ ( LayoutScrollViewContentViewBorderでも使用できます) を使用して、安全なエリアの動作を正確に制御します。 iOS 固有の Page.UseSafeArea は既存のアプリ用に残りますが、新しいコードでは SafeAreaEdgesを優先する必要があります。

最新のセーフ エリア ガイダンス (.NET 10 以降)

SafeAreaEdges を使用してセーフ エリアの動作を選択する

SafeAreaEdges は、 SafeAreaEdgesから次の値を受け取ります: DefaultNoneContainerSoftInput、および 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 プロパティを定義します。 このプロパティは、trueGridなど、任意のレイアウト クラスでStackLayoutに設定して、このプラットフォーム固有の同等の機能を実行できます。