NBDKの雑記帳

開発関連の備忘録や気になったことの感想などを気軽に書いています。

PopupDialogを使用した際のハマりどころ

先日ポップアップ形式で画面を表示する機能を作っていたのですが、

色々と細かい部分の実装が大変だったのでライブラリを探してみたところPopupDialogというものがあったので紹介したいと思います。

PopupDialogってどんなライブラリ?

こちらのライブラリは任意のViewControllerをポップアップ形式で表示してくれるもので、 スワイプやタップで画面を閉じたり、アニメーション付きで画面を表示してくれたりと便利な機能を提供してくれています。

特定の画面にポップアップ形式の画面を実装すること自体は然程難しいことでもないと思うのですが、 どこからでも同じようにポップアップ画面を表示する仕様だと画面の構成・状態を意識しないといけないのでちょっと面倒ですよね。

このライブラリはカスタムしたViewControllerのインスタンスを渡すだけで良さげな感じで表示してくれます。

CocoaPodsとCarthageが提供されているので導入も簡単です。

使い方

具体的なコードがGitHubのREADMEにあるので割愛しますが、流れとしてはUIViewControllerを継承したクラスのインスタンスを準備してPopupDialogを初期化します。

あとはUIViewControllerが持つpresentメソッドを使って初期化したPopupDialogを表示します。

とても簡単ですね!

使用する時のハマりどころ

Carthage updateもビルドも成功するのに起動したらクラッシュする

もしかするとこんなエラーが表示されていませんか?

dyld: Library not loaded: @rpath/DynamicBlurView.framework/DynamicBlurView
 Referenced from:~

これはPopupDialog内部で使用しているDynamicBlurViewというライブラリのパスが見当たらない!と言うことなので、 TARGETS->Build Phases->Run Scriptに以下を追記すると解決すると思います。

$(SRCROOT)/Carthage/Build/iOS/DynamicBlurView.framework

任意のViewControllerの画面が表示されない。

ざっくり言うと画面のheightが0になっている状態ですね。

他の類似ライブラリでも同じ現象を見かけますが、表示されないと焦りますよね。。

Auto Layoutでオブジェクトの高さをしっかりと明示してあげれば解決します。

例えば各オブジェクトのHeightを足した結果、親ViewのHeightが決定する形にしてあげればOKです。

最後に

Swift2系、3系の初期に比べるとライブラリの数が増えたので開発が楽ですね。

とても便利なので機会があれば是非使ってみてください〜。

github.com