UIStackView之一問一答
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,並設定好其寬度或高度來充當兩個排列檢視的間距。
排列檢視對齊位置不一致
問:排列檢視的對齊位置不一致,如何使用UIStackView?\ 答:我們可以選擇一種合適的對齊方式保證適用於絕大多數排列檢視,剩下的檢視使用UIView進行封裝,然後在View中進行約束佈局。
排列檢視大小不一致
問:排列檢視的大小不一致,可以用UIStackView嗎?\
答:可以的,UIStackView中的排列檢視不需要設定位置,至於尺寸大小可以根據自身需要設定。(設定方式AutoLayout
)
靈活多變的UI設計
問:多變的UI設計適合使用UIStackView嗎?\
答:再合適不過了,為什麼這麼說呢,雖然通過AutoLayout
可以自適應,來解決靈活多變的UI佈局,但是這會有繁瑣的程式碼來控制。而通過使用UIStackView
,我們僅新增一次排列檢視,而後可以通過控制排列檢視的顯示或隱藏(hidden)
就能使UIStackView
重新佈局。
列表可用?
問:UIStackView可以用於列表佈局嗎?\
答:可以,使用UIStackView可以快捷的佈局簡單列表,相比較UITableView較為簡單,使用UITableView往往需要設定代理,實現代理等。\
具體做法:一般採用UIScrollView + UIStackView
,ScrollView控制滾動,StackView管理內容。
拉伸、壓縮
問:聽說UIStackView可以自適應排列檢視,那麼排列檢視如果有拉伸或者壓縮的需求可以使用UIStackView嗎?\
答:可以,UIStackView會優先根據抗拉伸優先順序Content Hugging Priority
(優先順序越高,越不容易被拉伸)、抗壓縮優先順序Content Compression Resistance Priority
(優先順序越高,越不容易被壓縮)去約束排列檢視,並不會和StackView佈局相沖突。
The end
總而言之,如果你怕麻煩,那就快來使用UIStackView,把麻煩事都交給它。
如果有比較難以理解或者初學者不懂的問題,稍後也會在這整理。
如果你還沒有使用過UIStackView的可以檢視我的上篇文章「使用UIStackView來簡化iOS的介面佈局」。
- LeetCode 初級演算法之陣列(上),看看你都學會了嗎?
- LeetCode 初級演算法之連結串列,看看你都學會了嗎?
- LeetCode 初級演算法之字串(上),看看你都學會了嗎?
- 純程式碼佈局,也可以一樣的簡潔
- UIStackView之一問一答
- 使用UIStackView來簡化iOS的介面佈局
- 夏天來了,iOS開發者們該如何減少App耗電?(上)
- 夏天來了,App開發者們如何看待手機發燙問題?
- 聊聊iOS中UITableView複用的那些事
- 曾經經典的微信打飛機遊戲還有人記得嗎?
- iOS 原生渲染與 Flutter 有什麼區別 (上)
- 瞭解 Mach-O檔案
- CocoaPods中podsepc檔案設定詳解
- iOS 原生渲染與 Flutter 有什麼區別 (下)
- 簡單瞭解 iOS CVPixelBuffer (上)
- 談談 iOS 包瘦身方案
- 播放器重構的探索之路
- 如何使用CocoaPods製作私有庫
- iOS 元件化方案