質問: CGRectMake((dwidth-400)/2,(dheight-300)/2+300,400,300); } } self.presentViewController(activityVC, animated: true, completion: nil) ``` をどんな風に記述すると画面中央に持ってこれるでしょうか? 困っています。アドバイスお願いします。
回答: あまりUIActivityViewControllerには詳しくないのですが実験してみた結果を共有します。 `activityVC.popoverPresentationController?.sourceRect`にはpopoverを表示させるアクションの元となるViewのframeを入れることを想定されているのだと思います(例えばボタンを押したらpopoverするならボタンのすぐ上とかに出るように制御される)。 例えば適当なUIViewを作って位置やサイズを変更しながらpopoverがどこに表示されるか実験してみるとわかりやすいですが、sourceRectに指定したviewのframeによって自動的に位置が変わっていきます。 例:width=100, height=200のViewをど真ん中に設置し、sourceRectに指定した場合。width=0, height=0にするとpopoverの位置も自動的に下がる !popover ですので特にアクション元のViewがない状態で真ん中に表示させたいのであればサイズ0のViewをど真ん中に設置してそのViewのframeをsourceRectに指定する方法などを取るしかないのかなと思います。 ※この方法だと回転したときにpopoverが正しい位置にならないのでpopoverを再描画するなりしないといけないです。