経緯
以前UICollectionViewでの作り方を書いたのですが
https://qiita.com/netetahito/items/04303f898729d8ce9346
UIStackViewで組んだ方が簡単そうだなと薄々感じていました。
結果
ソース
https://github.com/osanaikoutarou/MultiLineStackView
構成
簡単に想像できると思いますが
verticalのUIStackViewにhorizontalのUIStackViewを追加していってるだけです。
所感:UICollectionViewに比べて簡単か?
delegate,datasource,layoutが無いのは簡単に思えました。
代わりに
・Viewにイベントハンドラを付ける必要がある
・「何番目のView」のような指定ができない(実装する必要がある)
あたりは少しかったるいです。
あと、各ViewがUIStackViewに組み込まれた際のwidthをどう計算するかという課題が残ります。
・AutoLayoutが設定されていたらそれに従う
・UILabelやUIButtonならtextやtitleから計算する
・protocolでwidthを受け取る
など考えられますが、汎用的にしようとすると複雑になりそうです。
ここらへん、どこかのライブラリで既に解消されてそうですね。
所感:もっと有効なシーンがありそう
Androidのように、左上からViewを並べていきたいというシーンにはもっと有効かもしれません。
当分使ってみます。
ちなみにhorizontal,verticalのspacingは既に設定できます。
中央揃え、右揃え、高さ固定なんかもできるはずです(用途があまり思い浮かばない)