8

正如标题所示,无论我为 popoverLayoutMargins 提供什么值,似乎都没有发生任何事情。

我正在尝试显示一个固定到 UIButton 的弹出菜单。一切正常,除了我想让弹出框扩大屏幕的宽度。

我尝试过使用preferredContentSize所呈现的UIViewController

问题是我无法让弹出框一直扩展到屏幕边缘。

根据文档,我发现:

默认边缘插入是沿每条边缘 10 个点

并且以编程方式更改它不会产生任何效果。为了验证这一点,我使用了 Xcode 的视图调试器。

窗户:

<UIWindow: 0x7fc96cd02c50; frame = (0 0; 375 667); gestureRecognizers = <NSArray: 0x60000025d580>; layer = <UIWindowLayer: 0x600000039140>>

UIPopoverView

<_UIPopoverView: 0x7fc96cf227a0; frame = (10 101; 355 57); layer = <CALayer: 0x61000023f760>>

请注意,弹出框的宽度恰好比窗口宽度小 10+10 个点

我正在尝试使用以下方法更改边距:

menu.popoverPresentationController?.popoverLayoutMargins = UIEdgeInsets(top: 0, left: -90, bottom: 0, right: -90)

我尝试在呈现 viewController 之前和之后都使用它。那是因为 UIPopoverPresentationController 文档指出

在调用 present(_:animated:completion:) 之后配置 popover 演示控制器可能看起来违反直觉,但 UIKit 在您启动演示之前不会创建演示控制器。此外,UIKit 必须等到下一个更新周期才能在屏幕上显示新内容。该延迟使您有时间为弹出框配置演示控制器。

4

0 回答 0