为 Mac Catalyst 应用指定 UI 成语

.NET 多平台应用 UI (.NET MAUI) Mac Catalyst 应用可以在 iPad 或 Mac 用户界面中运行:

  • iPad 用户界面风格会告诉 macOS 缩放应用的用户界面,以匹配 Mac 显示环境,同时保留类似 iPad 的外观。
  • Mac 用户界面风格不会缩放应用的用户界面以匹配 Mac 显示环境。 某些控件会更改其大小和外观,与它们交互的感觉和与 AppKit 控件交互的感觉相同。 例如,看起来 UIButton 与 . NSButton.

默认情况下,.NET MAUI Mac Catalyst 应用使用 iPad 用户界面风格。 如果这是你想要的行为,请确保应用的 Info.plist 文件仅将 2 指定为 UIDeviceFamily 键的值

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

你可能会发现采用 Mac 用户界面成语可以增强应用的用户体验。 为此,请更新应用的 Info.plist 文件以将 6 指定为键的值 UIDeviceFamily

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

重要

Mac 用户界面成语需要 macOS 11.0+。 因此,若要使用它,需要 SupportedOSPlatformVersion 将项目文件中的至少设置为 14.0,这是 macOS 11.0 的 Mac Catalyst 版本。

采用 Mac 用户界面成语可能需要对应用进行其他更改。 例如,如果你的应用使用大小为 iPad 的图像,或者具有硬编码大小,则可能需要更新应用以适应大小差异。

警告

UIStepperUIPickerViewApple UIRefreshControl 不支持 Mac 用户界面成语。 这意味着使用这些本机控件的 .NET MAUI 控件(StepperPickerRefreshView)不能在 Mac 用户界面中使用。 尝试这样做将引发 macOS 异常。

此外,Mac 用户界面成语中还应用了以下约束:

确定用户界面成语

可以在运行时确定 .NET MAUI Mac Catalyst 应用正在使用的用户界面。 可以通过检查以下UIViewController属性的值UserInterfaceIdiom来实现此目的:

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

另请参阅