UIPopoverControllerをPresentFromRectで表示するときの引数

ググって見つけたサンプルを参考にこう書いていた。

UIPopoverController popover = new UIPopoverController(viewController);
popover.PopoverContentSize = new System.Drawing.SizeF(300f, 300f);
popover.PresentFromRect(target.Frame, target, UIPopoverArrowDirection.Any, true);

すると何故か妙な位置にポップアップされて半日ほど困っていた。
このPresentFromRectメソッドの一つ目のRectangleFと二つ目のUIViewの意味がやっと判った。

  1. UIPopoverControllerの矢印が指すUIViewのFrameプロパティ
  2. UIPopoverControllerの矢印が指すUIViewのSuperview

これで綺麗に表示されるようになった。

UIPopoverController popover = new UIPopoverController(viewController);
popover.PopoverContentSize = new System.Drawing.SizeF(300f, 300f);
popover.PresentFromRect(target.Frame, target.Superview, UIPopoverArrowDirection.Any, true);