StoryboardからPopoverを作っても位置合わせコードは必要
公開日:
:
最終更新日:2016/04/25
Tips InterfaceBuilder, iPad, Segue, UIPopover
これだけだとわかりづらいんですが。
XcodeのStoryboardから、Segueを”Present As Popover”で設定すると、ボタンを押すとかの操作だけでそのボタンからPopoverを表示するようなギミックをコードなしで作ることができます。
が
このPopoverの矢印の位置がボタン等、アクションを設定したコンポーネントの左上になるのでちょっと見栄えが良くない、ということで結局コードを書く必要に駆られたのでメモ。StackOverFlowでは未回答だったり、「全部コードで書け」とか残念気味な回答しか見当たらなかった・・・
記述するのは、prepareForSegueの部分で、ここでsourceRect、sourceView等のpopoverに必要な設定をしてやることで対応します。
以下の様なコードで、hogehogeButtonをタップすると、hogehogeButtonの中央から矢印が出るpopoverを作ることができます。
(segueの名前)とか、hogehogeViewController、hogehogeButtonなどの部分は表示先のViewControllerやボタン、segueの名前にお消えてやればいいわけです。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"(segueの名前)"]) {
hogehogeViewController* vc = (hogehogeViewController*)(segue.destinationViewController);
vc.popoverPresentationController.sourceRect = self.hogehogeButton.bounds;
vc.popoverPresentationController.sourceView = self.hogehogeButton;
}
}
関連記事
-
-
iOS7でのPopover内サイズの指定
UIPopover内で表示する場合のViewControllerのコンテンツサイズ設定に関してのメモ
-
-
plistファイルに色を入れる
plistファイル中にUIColorを入れたい!という場合。普通RGBAの値を数値で入れるとかするけ
-
-
GoogleスプレッドシートからCSVにエクスポートしたデータを得る方法
情報がない中さんざ苦労しましたが、Googleスプレッドシート(の最初のシート)をCSVとしてエクス
-
-
iOS6時代のアプリのiOS7への対応
やや古い情報になるが、iOS7対応に関して自分がやったことの覚え書き。いろんな所から拾って来た情
-
-
”No Scheme”になってしまった場合の対応
知人がXcodeで突然「No Scheme」表示になってRunするターゲットとデバイスが選択できない
-
-
bitbucketをXcode5で使用する
bitbucketは無償で5人までの少人数チーム用のクローズド(非公開)リポジトリを作成できるため、
-
-
アプリ内で自動スリープの設定を無効化する
「設定」アプリ内で設定したスリープ時間設定を無効にするためのコード。 アプリがバックグラウンドにな
-
-
UIButtonのLocalizeに関するTips
Storyboardに設置したUIButtonのタイトルのLocalizeをしてたのですが、英語では
-
-
Xcode10からのimage literal / color literalの指定方法
アセットにあるUIImageの直接指定が可能なImage literalですが、気がついたらアセット
-
-
UISplitViewControllerの仕切り線の色を設定
UISplitViewControllerで、iPadを横向き(Landscape)にしたときの2つ
