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 用のサイズの画像を使用している場合や、ハードコーディングされたサイズがある場合は、サイズの違いに対応するようにアプリを更新する必要があります。
警告
UIStepperは UIPickerView、 UIRefreshControl Apple による Mac ユーザー インターフェイスのイディオムではサポートされていません。 つまり、これらのネイティブ コントロール (StepperおよびRefreshView) を使用する .NET MAUI コントロールは、 Picker Mac ユーザー インターフェイスのイディオムでは使用できません。 これを試みると、macOS 例外がスローされます。
さらに、Mac ユーザー インターフェイスのイディオムには、次の制約が適用されます。
- UISwitch は、Mac 以外のイディオム ビューでタイトルが設定されている場合に macOS 例外をスローします。
- UIButton は、macOS 例外が呼び出されたとき AddGestureRecognizer 、または呼び出されたとき SetTitle 、または SetImage 呼び出された状態を除く
UIControlStateNormal.Normal
任意の状態をスローします。 - UISliderは、、SetMinTrackImageSetMaxTrackImageメソッドが呼び出されSetThumbImage、プロパティが MaxValueImage MinValueImageMaximumTrackTintColorMinimumTrackTintColor設定されている場合に ThumbTintColormacOS 例外をスローします。
ユーザー インターフェイスのイディオムを決定する
実行時に、.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
関連項目
- developer.apple.com で Mac アプリ のユーザー インターフェイスのイディオムを選択します。
.NET MAUI