UIStackView 淺析

今天學習了某個swift的教學視頻,新發現了這個UIStackView,覺得可以研究下,與大家分享。
iOS 9中增加了新的控件:UIStackView,看下圖就明白作用了。本來直接鏈接了官方文檔的圖片,不知道爲何不能顯示,只能再上傳一次。


UIStackView Workflow

剛開始看到讓我更多地想起 Word 裏的文字排版,左對齊,居中之類,這裏是對 UIView子類對象排版。找相似的控件的話可以說是 LineLayout 佈局的 UICollectionView,不過更加靈活,可橫向可豎向,還可以在 IB 裏實時看到效果。在 UICollectionView 弄成這樣的佈局,還得好好設置一番。


LineLayout

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


婦聯2角色海報

這要是用 UICollectionView 來實現,要實現 dataSource 方法,在 IB 中設置 Cell,調整佈局參數,而使用 UIStackView,只需要拖進去幾個 UIImageView,就會自動對齊,在 IB 如下設置就會有上面的效果:


Setting

當然,這個的效果可能還有一些瑕疵,也浪費我幾個時間來調整細節,但得不到滿意的效果。UIStackView 雖然小巧靈活,但是要想更精緻的效果,最終還得靠 UICollectionView,看到微博上有人說這個類可能是脫胎於 Apple Watch,很可能,在那麼小的屏幕上,還要拖各種約束來進行對齊和調整位置真是要煩死。弄了一通,覺得用處不大吧。在推上,看見很多開發者對這個類很是興奮:
來自 twitter 上的看法


佈局

因爲 UIStackView 可以嵌套,實現以上的有絲分裂很方便,要是用 UICollectionView 簡直要命。還有一位開發者說,這麼多年了,終於有可以不滑動的 UITableView 了。由於我經驗尚淺,不知道這些需求怎麼產生的,或者我的腦洞還太小,不知道這個可以方便實現什麼效果。

總體而言,UIStackView 實現有對齊要求的視圖佈局非常非常得簡單,而使用 UICollectionView 和 UITableView 來實現就比較麻煩;還可以實時在 IB 裏預覽效果。最後有點很不方便的是,因爲 UIStackView 是利用 UIView 類的 intrinsicContentSize 屬性來計算佈局,對不同長寬比以及分辨率的圖片進行對齊和位置調整不是很給力,即使用 UIView 來進行封裝來一層也基本無效,除了對原圖片進行縮放,暫時還沒有找到好的解決方案。

本文裝載自http://www.jianshu.com/p/184e3fb94bd8。




發佈了37 篇原創文章 · 獲贊 27 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章