【问题标题】:UIPopoverPresentationController : multiple permittedArrowDirections order priorityUIPopoverPresentationController : 多个 allowedArrowDirections 顺序优先级
【发布时间】:2018-04-26 14:44:00
【问题描述】:

使用UIPopoverPresentationController 在弹出窗口中显示视图控制器,您可以定义permittedArrowDirections 属性来限制弹出窗口定位的可能性。我们可以使用| 运算符定义多个方向:

presentationController.permittedArrowDirections = UIPopoverArrowDirectionDown|UIPopoverArrowDirectionUp;

我知道控制器会根据可用空间自动选择这些方向之一。

但是是否可以定义订单优先级?这样:如果两个方向 A 都有足够的空间B,优先使用A

我试过颠倒UIPopoverArrowDirectionDownUIPopoverArrowDirectionUp的顺序,但似乎总是优先考虑UIPopoverArrowDirectionDown

有没有人有实现这一目标的想法?

【问题讨论】:

  • 不,它只是一个指示您允许的方向的标志。
  • @rmaddy 谢谢。但是有什么方法可以实现欲望行为?
  • 正如我在第一条评论中所说,没有。
  • @rmaddy 但我的意思是即使不使用 allowedArrowDirections 属性...
  • 您可以自己确定最佳箭头方向,然后只设置一个方向。

标签: ios objective-c swift uipopoverpresentationcontroller


【解决方案1】:

我不这么认为,permittedArrowDirectionsOptionSet,在底层是 bitmask。我建议您进行一些数学运算来计算是否有足够的空间显示在顶部并基于此传递一个值。

【讨论】:

  • 我希望有一个比计算更简单的解决方案,但正如其他人和您所建议的那样,情况似乎并非如此。如果没有人提供另一种解决方案,我会选择这个解决方案:)
  • 数学应该没那么难,基本上你应该知道弹出框的preferredContentSize,然后添加箭头的大小(如果你使用默认的popoverPresentationVC,这是一个常量值)和您可以使用源视图的中心点来检查 y 是否足以显示向上/向下,以及 x 是否足以显示左/右
猜你喜欢
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多