是否可以强制UIPopoverPresentationController重新定位popover而不是调整其大小?

萨姆

我正在使用Storyboard自动布局。我从单元格rect中显示一个popoverPresentationController:

NumberController * viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"NumberController"];
UIPopoverPresentationController *pc = [viewController popoverPresentationController];
    pc.delegate = self;
    pc.permittedArrowDirections = UIPopoverArrowDirectionAny;
    pc.sourceView = tableView;
    pc.sourceRect = [tableView rectForRowAtIndexPath:indexPath];
    [self.navigationController presentViewController:viewController animated:animated completion:nil];

弹出窗口以纵向模式显示在iPad上,并带有向上箭头。

我将iPad旋转到横向模式。popoverPresentationController保持相同的sourceView / sourceRect并正确指向该单元格。它也保持向上箭头。

但是它现在在视图的底部,因此弹出窗口的大小调整为较短的高度。这不是所需的行为。

如果弹出框只是移动到新位置并更改箭头方向,则根本不需要调整大小。这是所需的行为。

我认为以下方法可以允许我进行更改,但是由于sourceView rect不会更改,因此未调用它:

- (void)popoverController:(UIPopoverController *)popoverController
willRepositionPopoverToRect:(inout CGRect *)rect
                   inView:(inout UIView **)view {

}

我尝试过重设allowedArrowDirections(为preferredContentSize,因为这似乎是最合逻辑的地方)。这不起作用(弹出窗口仍会调整大小):

- (CGSize) preferredContentSize {
    [super preferredContentSize];
    self.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionUnknown;
    return CGSizeMake(DEFAULT_POPOVER_WIDTH,DEFAULT_POPOVER_HEIGHT);
}

我根本无法找到一种方法来强制popoverPresentationController更改箭头方向并重新定位弹出框,而不是调整弹出框的大小。我开始认为这甚至是不可能的-但我仍然希望我只是想念一些东西。

编辑:在此期间,我想到,如果我不希望它在iPad中调整大小,则弹出窗口不是呈现此视图的最佳方法。我将使用UIModalPresentationFormSheet演示文稿进行尝试。但是我仍然想找到这个问题的答案。

PastryPup

我只是遇到了问题

    - (void)popoverController:(UIPopoverController *)popoverController
    willRepositionPopoverToRect:(inout CGRect *)rect
               inView:(inout UIView **)view {

未被调用,因为我的视图控制器已分离。您的视图层次结构中可能存在一个尚未将其视图控制器添加为子视图控制器的视图。

我认为以下方法可以允许我进行更改,但由于sourceView rect不变,因此未调用

sourceView rect不必更改,只需更改界面方向即可。从UIPopoverControllerDelegate文档中:

对于使用presentPopoverFromRect:inView:permittedArrowDirections:animated:方法呈现的弹出窗口,当界面方向更改时,弹出窗口控制器将调用此方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以强制UIPopoverPresentationController重新定位popover而不是调整其大小?

来自分类Dev

重新定位/调整UIBezierPath的大小

来自分类Dev

以编程方式调整大小/重新定位所需的窗口

来自分类Dev

在窗口调整大小上重新计算和重新定位元素

来自分类Dev

网页上的用户可调整大小和重新定位窗口

来自分类Dev

对话框大小调整后的纸张动作对话框重新定位

来自分类Dev

调整大小和重新定位窗口以覆盖所有监视器

来自分类Dev

通过在调整屏幕大小时正确重新定位的输入,用于 2 个 inc/dec 按钮的 css

来自分类Dev

MASM:强制 OFFSET 指令不被重新定位

来自分类Dev

设置比其初始大小长的文本后,JTextField是否重新调整大小?

来自分类Dev

重新定位xlabel

来自分类Dev

重新定位xlabel

来自分类Dev

重新定位uilabel

来自分类Dev

如何使图像元素随窗口缩放而不是重新定位

来自分类Dev

强制div溢出而不是调整大小

来自分类Dev

是否可以调整Jlabel的大小?

来自分类Dev

应该将div封装在包装div中,以防止它们在视口调整大小时分解/重新定位

来自分类Dev

ng-bootstrap popover不会关闭,而是会稍微重新定位

来自分类Dev

重新定位jQuery警报

来自分类Dev

如何重新定位分区?

来自分类Dev

停止重新定位光标

来自分类Dev

重新定位颜色条

来自分类Dev

重新定位径向渐变

来自分类Dev

如果调整了浏览器窗口的大小,是否可以重新计算使用的“ srcset”图像?

来自分类Dev

是否可以按字节而不是宽度和高度调整图像大小?

来自分类Dev

强制“ Rallychart”组件在容器调整大小时重新绘制

来自分类Dev

如何调整UIImageView的大小并强制父UITableViewCell的重新布局

来自分类Dev

重新连接屏幕(运行irssi)会强制调整窗口大小

来自分类Dev

是否可以重新定义JavaScript类的方法?

Related 相关文章

  1. 1

    是否可以强制UIPopoverPresentationController重新定位popover而不是调整其大小?

  2. 2

    重新定位/调整UIBezierPath的大小

  3. 3

    以编程方式调整大小/重新定位所需的窗口

  4. 4

    在窗口调整大小上重新计算和重新定位元素

  5. 5

    网页上的用户可调整大小和重新定位窗口

  6. 6

    对话框大小调整后的纸张动作对话框重新定位

  7. 7

    调整大小和重新定位窗口以覆盖所有监视器

  8. 8

    通过在调整屏幕大小时正确重新定位的输入,用于 2 个 inc/dec 按钮的 css

  9. 9

    MASM:强制 OFFSET 指令不被重新定位

  10. 10

    设置比其初始大小长的文本后,JTextField是否重新调整大小?

  11. 11

    重新定位xlabel

  12. 12

    重新定位xlabel

  13. 13

    重新定位uilabel

  14. 14

    如何使图像元素随窗口缩放而不是重新定位

  15. 15

    强制div溢出而不是调整大小

  16. 16

    是否可以调整Jlabel的大小?

  17. 17

    应该将div封装在包装div中,以防止它们在视口调整大小时分解/重新定位

  18. 18

    ng-bootstrap popover不会关闭,而是会稍微重新定位

  19. 19

    重新定位jQuery警报

  20. 20

    如何重新定位分区?

  21. 21

    停止重新定位光标

  22. 22

    重新定位颜色条

  23. 23

    重新定位径向渐变

  24. 24

    如果调整了浏览器窗口的大小,是否可以重新计算使用的“ srcset”图像?

  25. 25

    是否可以按字节而不是宽度和高度调整图像大小?

  26. 26

    强制“ Rallychart”组件在容器调整大小时重新绘制

  27. 27

    如何调整UIImageView的大小并强制父UITableViewCell的重新布局

  28. 28

    重新连接屏幕(运行irssi)会强制调整窗口大小

  29. 29

    是否可以重新定义JavaScript类的方法?

热门标签

归档