天天看點

iOS 9: UIStackView 淺析

10/14 更新: 最近的見聞讓我覺得自己的這篇淺析太過淺薄無知了。留着等有了足夠好的認識後重寫一下。

iOS 9中增加了新的控件:UIStackView,看下圖就明白作用了。本來直接連結了官方文檔的圖檔,不知道為何不能顯示,隻能再上傳一次。

iOS 9: UIStackView 淺析

UIStackView Workflow

剛開始看到讓我更多地想起 Word 裡的文字排版,左對齊,居中之類,這裡是對

UIView

子類對象排版。找相似的控件的話可以說是 LineLayout 布局的

UICollectionView

,不過更加靈活,可橫向可豎向,還可以在 IB 裡實時看到效果。在

UICollectionView

弄成這樣的布局,還得好好設定一番。

iOS 9: UIStackView 淺析

LineLayout

我想到的第一個用處就是制作一個角色海報牆,類似這種:

iOS 9: UIStackView 淺析

婦聯2角色海報

這要是用

UICollectionView

來實作,要實作 dataSource 方法,在 IB 中設定 Cell,調整布局參數,而使用

UIStackView

,隻需要拖進去幾個

UIImageView

,就會自動對齊,在 IB 如下設定就會有上面的效果:

iOS 9: UIStackView 淺析

Setting

當然,這個的效果可能還有一些瑕疵,也浪費我幾個時間來調整細節,但得不到滿意的效果。

UIStackView

雖然小巧靈活,但是要想更精緻的效果,最終還得靠

UICollectionView

,看到微網誌上有人說這個類可能是脫胎于 Apple Watch,很可能,在那麼小的螢幕上,還要拖各種限制來進行對齊和調整位置真是要煩死。弄了一通,覺得用處不大吧。在推上,看見很多開發者對這個類很是興奮:

來自 twitter 上的看法:

iOS 9: UIStackView 淺析

布局

因為

UIStackView

可以嵌套,實作以上的有絲分裂很友善,要是用

UICollectionView

簡直要命。還有一位開發者說,這麼多年了,終于有可以不滑動的

UITableView

了。由于我經驗尚淺,不知道這些需求怎麼産生的,或者我的腦洞還太小,不知道這個可以友善實作什麼效果。

總體而言,

UIStackView

實作有對齊要求的視圖布局非常非常得簡單,而使用

UICollectionView

UITableView

來實作就比較麻煩;還可以實時在 IB 裡預覽效果。最後有點很不友善的是,因為

UIStackView

是利用

UIView

類的 intrinsicContentSize 屬性來計算布局,對不同長寬比以及分辨率的圖檔進行對齊和位置調整不是很給力,即使用

UIView

來進行封裝來一層也基本無效,除了對原圖檔進行縮放,暫時還沒有找到好的解決方案。

文/seedante(簡書作者)

原文連結:http://www.jianshu.com/p/184e3fb94bd8

著作權歸作者所有,轉載請聯系作者獲得授權,并标注“簡書作者”。

繼續閱讀