将UIPopoverController放在同一位置,只更改箭头偏移量?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

我的目标是保持与UIPopoverController相同的坐标,只需更改箭头偏移量即可。所以基本上我有三个按钮触摸他们每个人显示一个popover。当呈现这个popover时,它会改变屏幕上的位置,但我不想那样。要更清楚地看看screenoshots:

提问于
用户回答回答于

对于我的popover,我希望箭头是左上角而不是顶点(这是默认值)。

我设法通过设置popoverLayoutMarginsUIPopoverController 的属性来获得下面的结果(截图)。您可以使用它来减少UIPopoverController的内部计算中使用的屏幕区域,以确定在哪里显示弹出窗口。

代码:

// Get the location and size of the control (button that says "Drinks")
CGRect rect = control.frame;

// Set the width to 1, this will put the anchorpoint on the left side
// of the control
rect.size.width = 1;

// Reduce the available screen for the popover by creating a left margin
// The popover controller will assume that left side of the screen starts
// at rect.origin.x
popoverC.popoverLayoutMargins = UIEdgeInsetsMake(0, rect.origin.x, 0, 0);

// Simply present the popover (force arrow direction up)
[popoverC presentPopoverFromRect:rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

我想你可以通过调整上述内容来获得理想的结果。

用户回答回答于

你不能像苹果公司内置的UIPopoverViewController类那样去做。但是实现你自己的popover视图控制器应该是相当简单和合乎逻辑的(只是一些非常基本的2D几何图形以及在UIView的文档中挖掘的一些内容)。

扫码关注云+社区