Catalyst 中弹出窗口的水平大小 class?
Horizontal size class of popovers in Catalyst?
如果我在 iPad 上将视图控制器显示为弹出窗口(通过将其 modalPresentationStyle
设置为 .popover
),它将报告其水平大小 class 为 .compact
。但是,如果我 运行 在 Catalyst 应用程序中使用相同的代码,弹出窗口中的视图控制器会报告 class 的水平大小 .regular
。紧凑是我所期望的。在我展示它之前在视图控制器的 popoverPresentationController
上设置 overrideTraitCollection
可以使 class 的大小在 iPad 上正常,但它不会使其在 Catalyst 上紧凑。
如何使弹出窗口中的视图控制器在 Catalyst 中正确报告紧凑的水平尺寸 class?
我假设 Catalyst 作者在 Mac 上将默认值设置为 .regular
,因为弹出框通常可以大得多。
如果你只想在 Mac 上覆盖它,我会使用 #ifdef
,例如:
#if targetEnvironment(macCatalyst)
// set ‘overrideTraitCollection’ so it forces '.compact’ on the popover
#endif
我在 Catalyst 的 WWDC 2021 实验室中问过一位 Apple 工程师,他说这是一个错误。我已将其提交为反馈 FB9124431。
如果我在 iPad 上将视图控制器显示为弹出窗口(通过将其 modalPresentationStyle
设置为 .popover
),它将报告其水平大小 class 为 .compact
。但是,如果我 运行 在 Catalyst 应用程序中使用相同的代码,弹出窗口中的视图控制器会报告 class 的水平大小 .regular
。紧凑是我所期望的。在我展示它之前在视图控制器的 popoverPresentationController
上设置 overrideTraitCollection
可以使 class 的大小在 iPad 上正常,但它不会使其在 Catalyst 上紧凑。
如何使弹出窗口中的视图控制器在 Catalyst 中正确报告紧凑的水平尺寸 class?
我假设 Catalyst 作者在 Mac 上将默认值设置为 .regular
,因为弹出框通常可以大得多。
如果你只想在 Mac 上覆盖它,我会使用 #ifdef
,例如:
#if targetEnvironment(macCatalyst)
// set ‘overrideTraitCollection’ so it forces '.compact’ on the popover
#endif
我在 Catalyst 的 WWDC 2021 实验室中问过一位 Apple 工程师,他说这是一个错误。我已将其提交为反馈 FB9124431。