blue_field

技術的なメモとか読書記録とかいろいろ(の予定

RubyMotionで、Interface Builderを使ってLaunch Screen作成

久しぶりの更新。

年が明けてから仕事がバタバタしていて触れてなかったのだが、今月は久々にRubyMotionを書いていた。Launch Screen(スプラッシュ画面)を作る機会があったので簡単にメモっておく。

Interface BuilderでLaunch Screen作成可能に

どうやらXcode6(iOS8)から、Interface Builderを使って起動画面を作れるようになったらしい。iOS界隈の情報はそんなにキャッチアップしてないので知らなかった。

xib形式で画面を作成できるということは、AutoLayoutを使って1ファイルで全ての機種サイズに対応できるということ。機種ごとにサイズの異なる画像が必要なんだとばかり思っていた情弱の自分には朗報だった。

こちらの記事などに書いてある。
[iOS 8/Xcode 6] Launch Screen (スプラッシュ画面) を Interface Builder で作成できるようになりました | Developers.IO

RubyMotionからInterface Builderを扱う

Xcodeを使ってSwiftで書いている場合は、xibファイルとの連携はすぐに出来る。RubyMotionから同様のことをするには、ibというgemを使用する。

rubymotion/ib

# Gemfile

gem 'ib'

bundleすると、rakeタスクが追加される。
(※インストールされたibのバージョンは 0.7.2)

rake ib:open

を実行。プロジェクトのルートディレクトリにib.xcodeprojというディレクトリが作成され、Xcodeが開く。Xcode上でのディレクトリの構成は以下のようになっている。

f:id:yusuke_1031:20150330015455p:plain

これでInterfaceBuilderとの連携が可能に。

Launch Screen作成

Xcodeの)Resourcesのところで、右クリック -> 新規ファイル作成。ファイルのテンプレートとしてLaunch Screenを選択。新規作成されるxibファイルの置き場所は、RubyMotionプロジェクトのresourcesディレクトリ下にする。 以下の様なそっけないViewがXcode上にできる。

f:id:yusuke_1031:20150330015539p:plain

あとは、このxibファイルがLaunch Screenになるよう、RubyMotion側で設定してあげれば良い。上記で新規作成したファイル名がLaunchScreen.xibであればこんな感じで。

# Rakefile

Motion::Project::App.setup do |app|
  ...
  app.info_plist['UILaunchStoryboardName'] = 'LaunchScreen'
end

これで準備完了。rakeでアプリをビルドする際に、このxibファイルも一緒にコンパイルされ、あのそっけない画面がアプリの起動画面として表示されるようになる。Xcode側で編集・保存をすれば、次のビルド時にそれが当然反映される。AutoLayoutの制約を付けながらパーツを付けていけば、複数の画像を作らなくて済みそう。

おわり

以上、簡単な備忘録。

RubyMotion書いてる時は、基本的にXcode使わずにviewを作ったりしていたが、Xcode側でやるのも良いかなと思った。(今作ってるのはそんなに複雑なものでもないので、コードだけで書けてしまうのだけれども)

ibの説明はちょっと古いがこの記事が良さ気。
第八回 RubyMotion で Interface Builder を使うには? - 実践!RubyMotion - Mobile Touch

いまさら言うことでもないが、Xcodeの各機能のアイコンは本当に分からん、Appleが作ってるとは思えないw