motion-kitを使ってRubyMotionでAutoLayoutを利用する。

RubyMotionでAutoLayoutが使えないか調べたところ、motion-kitが良さ気だったので使ってみました。

AutoLayoutについて勉強したい人は「UIKit徹底解説 iOSユーザーインターフェイスの開発」がおすすめです。

UIKit徹底解説 iOSユーザーインターフェイスの開発

UIKit徹底解説 iOSユーザーインターフェイスの開発

motion-kitのページを見るとわかりますが、DSLでAutoLayoutを設定したLayoutクラスを定義します。

class HogeLayout < MotionKit::Layout
  def layout
    add UIButton, :button
  end

  def button_style
    title 'Press it!'
    size_to_fit

    constraints do
      left.equals(:superview).plus(10)
      right..equals(:superview).minus(10)
      top.equals(:superview).plus(10)
      height 100
    end
  end
end

あとはLayoutクラスのインスタンスをコントローラのビューに設定するだけでOK。

Layoutに追加したボタンなんかも簡単に参照できます。

class HogeController < UIViewController
  def loadView
    @layout = HogeLayout.new
    self.view = @layout.view

    @button = @layout.get(:button)
  end
end

で、いい感じだなと思いながら触っていたのですが、UITableViewやUINavigationControllerなどのよく使うやつのサンプルがないというか、GitHubのIssueやStackOverflowに分散していたので、やりたいことを実装するのにけっこう苦労しました。

自分用のメモとして作ったサンプルをGitHubに上げてみたので、同じような境遇の人は使ってみてください。

AutoLayoutというと面倒くさくて嫌だという人が多いイメージがあるんですが、あまり自分はそう思うことは少なくて、なぜかなーと思っていました。

もともと自分がフリーハンドで図を書くのが苦手で、座標・幅・高さを数値指定して図を書きたいからじゃないかなと最近は思っています。 (ピッタリ数値が揃っているのがいい感じ)

なんとなく自分に合っているツールな気がするので、もう少し使ってみようかなと思います。