2017-02-21 34 views
1

SourceRectが設定ボタン(歯車アイコンが付いたボタン)であるポップオーバーがあります。 Popoverの位置は、LandscapeLeftを除くすべてのデバイスの向きに適しています。UIPopoverPresentationControllerが正しい位置に表示されない

私はXCodeのインタフェースビルダーからアンカーを設定し、プログラムのソース矩形を設定:

以下
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

は、ポップオーバーの矢印と設定ボタンの間にギャップがあります。

このギャップがどこから来たかを調べるにはどうすればよいですか?

答えて

0

私はsimlarの問題を抱えていましたが、間違った場所で間違った値を使用してサイズや位置を計算していたことが原因でした。

1. LayoutSubviewsですべての位置/サイズの計算を行います。コントローラのLayoutSubviewsをオーバーライドし、そこに位置情報を計算します。ベースコールの後。

2. FrameとBoundsのログアウトサイズ:この方法で、あなたが持っているものとその場所を見ることができます。この違いを確認するには、レイアウトのサブビューの前後でこれを行います。

+0

私は両方のソリューションを試しましたが、問題はまだ見つかりません。フレームと境界は正確で、SourceRectの位置も同じです。 – currarpickt

+0

@currarpicktそれはバマーです。私が配置しようとしているアイテムの背景色を設定し、アイテムが配置されていることを確認することで、位置とサイズを解決するもう1つの方法です。それが私があなたにこれを解決することに近づくのを見ることができる唯一の他の方法です。 –

+0

私はそれを試しました、すべての背景色を変更し、すべてが正しい位置にあります。 – currarpickt

関連する問題