2017-02-21 56 views
1

我有一个弹出窗口,SourceRect是设置按钮(带齿轮图标的按钮)。 除了LandscapeLeft之外,弹出窗口位置对于所有设备方向都是正确的。UIPopoverPresentationController没有显示在正确的位置

我设置从XCode的接口构建器的锚和编程方式设置源rect:

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

下面是酥料饼的位置的结果是:

纵向/颠倒的(正确的):

(正确):

Landscape Right

景观左(错误)

Landscape Left

正如你可以看到,如果设备方向为横向左,有酥料饼的箭头和设置按钮之间的空隙。

如何找出这个缺口来自哪里?

回答

0

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

1.在LayoutSubviews中执行所有位置/大小计算:覆盖控制器中的LayoutSubviews并计算您的位置信息。基地召集后。

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

+0

我尝试了两种解决方案,但仍找不到问题。框架和边界是正确的,也是SourceRect的位置。 – currarpickt

+0

@currarpickt这是一个无赖。另一种方式,我通过设置我试图定位的物品的背景颜色以及放置它的物品的背景颜色来解决定位和尺寸问题ID。只需查看是否所有物品都符合预期。这是唯一的另一种方式,我可以看到你越来越接近解决这个问题。 –

+0

我试过这个,改变了每一种背景颜色,一切都处于正确的位置。 – currarpickt

相关问题