今天學習了某個swift的教學視頻,新發現了這個UIStackView,覺得可以研究下,與大家分享。
iOS 9中增加了新的控件:UIStackView,看下圖就明白作用了。本來直接鏈接了官方文檔的圖片,不知道爲何不能顯示,只能再上傳一次。
剛開始看到讓我更多地想起 Word 裏的文字排版,左對齊,居中之類,這裏是對 UIView
子類對象排版。找相似的控件的話可以說是
LineLayout 佈局的 UICollectionView
,不過更加靈活,可橫向可豎向,還可以在
IB 裏實時看到效果。在 UICollectionView
弄成這樣的佈局,還得好好設置一番。
我想到的第一個用處就是製作一個角色海報牆,類似這種:
這要是用 UICollectionView
來實現,要實現
dataSource 方法,在 IB 中設置 Cell,調整佈局參數,而使用 UIStackView
,只需要拖進去幾個 UIImageView
,就會自動對齊,在
IB 如下設置就會有上面的效果:
當然,這個的效果可能還有一些瑕疵,也浪費我幾個時間來調整細節,但得不到滿意的效果。UIStackView
雖然小巧靈活,但是要想更精緻的效果,最終還得靠 UICollectionView
,看到微博上有人說這個類可能是脫胎於
Apple Watch,很可能,在那麼小的屏幕上,還要拖各種約束來進行對齊和調整位置真是要煩死。弄了一通,覺得用處不大吧。在推上,看見很多開發者對這個類很是興奮:
來自 twitter 上的看法:
因爲 UIStackView
可以嵌套,實現以上的有絲分裂很方便,要是用 UICollectionView
簡直要命。還有一位開發者說,這麼多年了,終於有可以不滑動的 UITableView
了。由於我經驗尚淺,不知道這些需求怎麼產生的,或者我的腦洞還太小,不知道這個可以方便實現什麼效果。
總體而言,UIStackView
實現有對齊要求的視圖佈局非常非常得簡單,而使用 UICollectionView
和 UITableView
來實現就比較麻煩;還可以實時在
IB 裏預覽效果。最後有點很不方便的是,因爲 UIStackView
是利用 UIView
類的 intrinsicContentSize
屬性來計算佈局,對不同長寬比以及分辨率的圖片進行對齊和位置調整不是很給力,即使用 UIView
來進行封裝來一層也基本無效,除了對原圖片進行縮放,暫時還沒有找到好的解決方案。
本文裝載自http://www.jianshu.com/p/184e3fb94bd8。