山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

SwiftでUICollectionViewを試す

UICollectionView便利ですね。世の中のサンプルはObjective-CばかりでSwiftはほとんどありません。storyboardを使ってUICollectionViewFlowLayoutのカスタマイズまでしているものを参考に移植してみました。

元のチュートリアルはこちらです。
An iPhone iOS 6 Storyboard-based Collection View Tutorial

ソースはgithubにあげておきました。
https://github.com/hiroto-yamashita/swift-collectionview

ラーニング。

引数が多かったり型がoptionalだったりなかったりでメソッドの実装がややこしいので基本的にプロトコルは宣言しておいてescを押して自動補完したほうがよい。

Objective-CでinitWith~となっているコンストラクタも自動補完する。例えばUIImage(まで入力してescを押すと候補が出るので似ているものを選ぶ。

ラベルを自動的に横幅いっぱいまで広げたい場合。storyboardでやるにはattributes inspectorでなく右下のconstraintsを設定する。4つ並んでいるアイコンの一番左、マウスオーバーで"Align"と出てくるものをクリックし、Horizontal center in containerにチェックを入れ、下のadd 1 constraintをクリック。

UIPinchGestureRecognizerのコールバックの書き方がネットを探してもどこにも出ていない。
Objective-C
UIGestureRecognizer *pinchRecognizer =
     [[UIPinchGestureRecognizer alloc] initWithTarget:self
     action:@selector(handlePinch:)];  

- (IBAction)handlePinch:(UIPinchGestureRecognizer *)sender {
}
 Swift
var pinchRecognizer: UIGestureRecognize =
    UIPinchGestureRecognizer(target:self, action: "handlePinch:")



func handlePinch(sender: UIPinchGestureRecognizer) {
}
セレクタの書き方やIBActionを返すところで戸惑いましたが一番シンプルに書くのが正解でした。