UIPopoverPresentationController popoverLayoutMargins, кажется, не имеет абсолютно никакого эффекта
Как видно из названия, какие бы значения я ни указывал для popoverLayoutMargins, похоже, ничего не происходит.
Я пытаюсь отобразить всплывающее меню, привязанное к кнопке UIB. Все работает отлично, за исключением того, что я хотел бы иметь всплывающее окно для увеличения ширины экрана.
Я пытался играть с 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 гласит, что
Настройка контроллера презентации всплывающего окна после вызова подарка (_:animated:complete:) может показаться нелогичным, но UIKit не создает контроллер презентации до тех пор, пока вы не инициируете презентацию. Кроме того, UIKit должен подождать до следующего цикла обновления, чтобы все равно отображать новый контент на экране. Эта задержка дает вам время настроить контроллер презентации для вашего поповера.