【问题标题】:Objective-C: How to get the UIPopoverPresentationController arrow to point up?Objective-C:如何让 UIPopoverPresentationController 箭头指向上方?
【发布时间】:2016-11-15 03:21:39
【问题描述】:

我为 iPad 应用程序实现了UIPopoverPresentationController,但弹出框的箭头指向下方而不是向上。 popPresenter.arrowDirection 给出一个错误,指出这是一个只读属性。如何将 popOver 的箭头设置为向上而不是向下?

UIPopoverPresentationController *popPresenter = [self.alertController popoverPresentationController];
popPresenter.sourceView =  self;       
popPresenter.sourceRect = CGRectMake(self.center.x, self.contentSize.height, self.bounds.origin.y, self.contentSize.height);
popPresenter.arrowDirection = UIPopoverArrowDirectionUp;

【问题讨论】:

  • 你要设置permittedArrowDirections属性
  • 我将permittedArrowDirections 属性设置为等于YES?但是arrowDirectionProperty 仍然是只读的...
  • @matt 我被告知,不是很清楚或完整的答案......
  • @D.Khan permittedArrowDirections 不是 BOOL ,您不能将其设置为 YES
  • 是的,我已经从下面的答案中得到了。但是我的问题仍然存在,当我将属性设置为 UIPopoverArrowDirectionUp 时,箭头没有指向并且 popOver 被搞砸了。

标签: ios objective-c ipad constraints uipopovercontroller


【解决方案1】:

试试这个

popPresenter.permittedArrowDirections = UIPopoverArrowDirectionUp;

【讨论】:

  • 不幸的是,这弄乱了整个弹出视图,并拉伸了约束,使它看起来很不稳定。
  • 来自 Apple Docs 在显示弹出框之前,将此属性设置为您喜欢的弹出框箭头方向。在演示过程中,popover 演示控制器会尝试尊重您的偏好,但如果它不能以其他方式布置 popover,则可能会使用不同的箭头方向。弹出框使用的实际箭头方向存储在 arrowDirection 属性中。
【解决方案2】:

以下代码告诉 iOS 以向上的箭头呈现 UIPopoverPresentationController

popPresenter.permittedArrowDirections = UIPopoverArrowDirectionUp;

但是,如果您阅读了与它相关的苹果文档(并且名称也暗示了它),它只会告诉操作系统尝试将箭头指向上方,这并不能保证。

permittedArrowDirections

在显示弹出框之前,将此属性设置为箭头 您喜欢弹出框的方向。在演示过程中, popover 演示控制器尝试尊重您的偏好,但 如果不能以其他方式布局,则可以使用不同的箭头方向 弹出框。弹出框使用的实际箭头方向存储在 arrowDirection 属性。

您需要在有足够空间的地方展示您的弹出框,以便弹出框以向上的箭头显示并具有正确的 UI。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    相关资源
    最近更新 更多