プログラマブログ

by wacul

menu
  • プログラマ
  • SwiftでNSLayoutConstraintを綺麗に扱えるライブラリを作ってみる

2014.07.14SwiftでNSLayoutConstraintを綺麗に扱えるライブラリを作ってみる

こんにちわ、kyohです。

さぁさぁSwiftアツいですね。プライベートでは連日Swiftと戯れながら、RubyMotionで仕事しています。

以前RubyMotion向けに、NSLayoutConstraintの使い方を簡単に書いてみました(iOSアプリで Programmable な自動レイアウト(NSLayoutConstraint))が、 Swift版を作っている最中なので、ここに掲載してみます。

NSView版(for Mac OSX)

https://github.com/kyoh/SwiftyLayoutNS

UIView版(for iOS)

https://github.com/kyoh/SwiftyLayoutUI

使い方(例)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var view1 = UILabel()
self.addSubview(view1)
var view2 = UILabel()
self.addSubview(view2)

// viewbindメソッドが追加されます。
// bindメソッドにはいくつでもConstraintを指定することができます。
self.bind(
  // 位置を他のビューの位置との相対位置で指定できます。
  // 例:view1 の上辺=親ビューの上辺から20pxの位置
  view1.top == self.top + 20,
  // 位置を一定の位置を超えない様に指定できます。
  // 例:view2 の右辺=親ビューの右辺から-20pxの位置よりも左側
  view1.right <= self.right - 20,
  // 位置を他のビューの位置の倍数で指定できます。
  // 例:view1の幅 : view2の幅=2 : 3
  view1.width * 3 == view2.width * 2,
  // 高さや幅などは、固定値も指定できます。
  // 例:view1 の高さを45pxに固定。
  view1.height == 45,
)

ちなみに、Swiftのコードハイライトで困ったときは、「Ocaml」を代用するといいみたいです。 この記事でも(まだSwiftのハイライトプラグインがないため)Ocamlを代用しています。

この記事を書いた人kyoh

kyohです。蕎麦と鳥をこよなく愛するおでぶです。C#使いでした。

waculでは、プログラマを募集しています。

現在はプロダクトとして、課題発見から改善提案まで自動で行うWeb改善プラットフォーム「AIアナリスト」を開発中です。

waculの採用情報へ

ページトップへ