UIPopoverPresentationController没有显示在正确的位置

时间:2017-02-21 06:07:30

标签: ios xamarin.ios device-orientation uipopover

我有一个弹出框,其中SourceRect是设置按钮(带齿轮图标的按钮)。 弹窗位置对于除LandscapeLeft之外的所有设备方向都是正确的。

我从XCode Interface构建器设置锚点并以编程方式设置源矩形:

var poc = segue.DestinationViewController as PVPencilOptionsController;
poc.ViewModel = this.ViewModel.ColorPicker;
var ppc = (UIPopoverPresentationController)poc.PresentationController;
ppc.SourceRect = this.PVEditIssuePhotoPencilOptionsButton.Frame;

以下是弹出位置的结果:

人像/颠倒(正确):

Portrait and upside down

风景正确(正确):

Landscape Right

左侧风景(错误)

Landscape Left

如您所见,如果设备方向为横向左侧,则弹出箭头和设置按钮之间存在间隙。

如何找出这个差距来自哪里?

1 个答案:

答案 0 :(得分:1)

我有类似的问题,我的全部都是因为我在计算我的尺码和我在错误位置的位置,有时也使用了错误的值。我建议您找到问题的两件事:

<强> 1。在LayoutSubviews中执行所有位置/大小调整计算:覆盖控制器中的LayoutSubviews并在那里计算您的定位信息。在基地召唤之后。

<强> 2。注销框架和边界的尺寸:这样你就可以看到你拥有的和你想要的位置。在布局子视图之前和之后执行此操作以查看差异。