2017-02-21 83 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