UIStackView之一問一答

語言: CN / TW / HK

theme: juejin highlight: xcode


“我報名參加金石計劃1期挑戰——瓜分10萬獎池,這是我的第2篇文章,點選檢視活動詳情

前言

此篇文章作為在使用UIStackView前的一些答疑,既是掃盲篇,也是實用篇,以下會講述一些實用的案例,目的就是讓更多的人擁抱UIStackView。同時歡迎小夥伴通過評論區講講使用StackView遇到的問題。

答疑

排列檢視間距大小不一

問:排列檢視間距大小不一,可以用UIStackView嗎?\ 答:當然可以用,UIStackView雖然有space屬性,但是適用於所有的排列檢視,如果想要指定某個排列檢視之間的間距,有以下兩種方法: - 使用 - (void)setCustomSpacing:(CGFloat)spacing afterView:(UIView *)arrangedSubview API_AVAILABLE(ios(11.0),tvos(11.0));方法,不過這個方法有版本的限制。 - 使用一個UIView進行填充;即在需要間隙的位置插入一個空的view,並設定好其寬度或高度來充當兩個排列檢視的間距。

截圖2022-09-07 22.49.43.png

排列檢視對齊位置不一致

問:排列檢視的對齊位置不一致,如何使用UIStackView?\ 答:我們可以選擇一種合適的對齊方式保證適用於絕大多數排列檢視,剩下的檢視使用UIView進行封裝,然後在View中進行約束佈局。

截圖2022-09-07 23.08.00.png

排列檢視大小不一致

問:排列檢視的大小不一致,可以用UIStackView嗎?\ 答:可以的,UIStackView中的排列檢視不需要設定位置,至於尺寸大小可以根據自身需要設定。(設定方式AutoLayout

靈活多變的UI設計

問:多變的UI設計適合使用UIStackView嗎?\ 答:再合適不過了,為什麼這麼說呢,雖然通過AutoLayout可以自適應,來解決靈活多變的UI佈局,但是這會有繁瑣的程式碼來控制。而通過使用UIStackView,我們僅新增一次排列檢視,而後可以通過控制排列檢視的顯示或隱藏(hidden)就能使UIStackView重新佈局。

列表可用?

問:UIStackView可以用於列表佈局嗎?\ 答:可以,使用UIStackView可以快捷的佈局簡單列表,相比較UITableView較為簡單,使用UITableView往往需要設定代理,實現代理等。\ 具體做法:一般採用UIScrollView + UIStackView,ScrollView控制滾動,StackView管理內容。 2022-09-08 18-47-16.2022-09-08 18_48_45.gif

拉伸、壓縮

問:聽說UIStackView可以自適應排列檢視,那麼排列檢視如果有拉伸或者壓縮的需求可以使用UIStackView嗎?\ 答:可以,UIStackView會優先根據抗拉伸優先順序Content Hugging Priority(優先順序越高,越不容易被拉伸)、抗壓縮優先順序Content Compression Resistance Priority(優先順序越高,越不容易被壓縮)去約束排列檢視,並不會和StackView佈局相沖突。

The end

總而言之,如果你怕麻煩,那就快來使用UIStackView,把麻煩事都交給它。

如果有比較難以理解或者初學者不懂的問題,稍後也會在這整理。

如果你還沒有使用過UIStackView的可以檢視我的上篇文章「使用UIStackView來簡化iOS的介面佈局」。