[iOS]タグ一覧っぽい左上詰めのUIStackView


経緯

以前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は既に設定できます。

中央揃え、右揃え、高さ固定なんかもできるはずです(用途があまり思い浮かばない)