次の方法で共有


Mac Catalyst アプリの UI イディオムを指定する

.NET マルチプラットフォーム アプリ UI (.NET MAUI) Mac Catalyst アプリは、iPad または Mac ユーザー インターフェイスのイディオムで実行できます。

  • iPad ユーザー インターフェイスの idiom は、iPad のような外観を維持しながら、Mac の表示環境に合わせてアプリのユーザー インターフェイスをスケーリングするように macOS に指示します。
  • Mac ユーザー インターフェイスのイディオムは、Mac の表示環境に合わせてアプリのユーザー インターフェイスをスケーリングしません。 一部のコントロールはサイズと外観を変更し、コントロールとの対話はコントロールとの対話と AppKit 同じように感じます。 たとえば、a は UIButton NSButton.

既定では、.NET MAUI Mac Catalyst アプリでは iPad ユーザー インターフェイスのイディオムが使用されます。 これが目的の動作である場合は、アプリの Info.plist ファイルでキーの UIDeviceFamily 値として 2 のみが指定されていることを確認します。

<key>UIDeviceFamily</key>
<array>
  <integer>2</integer>
</array>

Mac ユーザー インターフェイスのイディオムを採用すると、アプリのユーザー エクスペリエンスが向上する場合があります。 これを行うには、アプリの Info.plist ファイルを更新して、キーの UIDeviceFamily 値として 6 を指定します。

<key>UIDeviceFamily</key>
<array>
  <integer>6</integer>
</array>

重要

Mac ユーザー インターフェイスのイディオムには、macOS 11.0 以降が必要です。 そのため、これを使用するには、プロジェクト ファイル内を少なくとも 14.0 に設定 SupportedOSPlatformVersion する必要があります。これは macOS 11.0 と同等の Mac Catalyst バージョンです。

Mac ユーザー インターフェイスの慣用句を採用するには、アプリに追加の変更を加える必要がある場合があります。 たとえば、アプリで iPad 用のサイズの画像を使用している場合や、ハードコーディングされたサイズがある場合は、サイズの違いに対応するようにアプリを更新する必要があります。

警告

UIStepperUIPickerViewUIRefreshControl Apple による Mac ユーザー インターフェイスのイディオムではサポートされていません。 つまり、これらのネイティブ コントロール (StepperおよびRefreshView) を使用する .NET MAUI コントロールは、 Picker Mac ユーザー インターフェイスのイディオムでは使用できません。 これを試みると、macOS 例外がスローされます。

さらに、Mac ユーザー インターフェイスのイディオムには、次の制約が適用されます。

ユーザー インターフェイスのイディオムを決定する

実行時に、.NET MAUI Mac Catalyst アプリが使用しているユーザー インターフェイスのイディオムを特定できます。 これは、次のプロパティの値を UserInterfaceIdiom 調べることで UIViewController実現できます。

#if MACCATALYST
    UIKit.UIViewController viewController = Platform.GetCurrentUIViewController();
    if (viewController.TraitCollection.UserInterfaceIdiom == UIKit.UIUserInterfaceIdiom.Mac)
        // Mac user interface idiom
    else
        // iPad user interface idiom
#endif

関連項目