新聞中心
概覽
SwiftUI 提供廣泛的容器視圖,用于視圖的分組和重復(fù)。一些容器專用于打造結(jié)構(gòu)和布局,例如 Stack 視圖、惰性 Stack 視圖和 Grid 視圖。另一些容器,例如 List 和 Form,也采用系統(tǒng)標(biāo)準(zhǔn)的視覺效果和交互。

創(chuàng)新互聯(lián)公司公司2013年成立,先為共和等服務(wù)建站,共和等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為共和企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
為 App 用戶界面的每個部分選擇最合適的容器視圖,是一項需要學(xué)習(xí)的重要技能;從確定相鄰兩個視圖的位置,到使用數(shù)百種元素創(chuàng)建復(fù)雜的布局,它能在方方面面為你提供幫助。
對視圖集合進(jìn)行分組
Stack 視圖是 SwiftUI 中最原始的布局容器。利用 Stack 可以將視圖集合按水平線或垂直線分組,或?qū)⒁晥D相互疊放。
使用 HStack (英文) 可以將視圖置于水平線上,使用 VStack (英文) 可以將視圖置于垂直線上,而使用 ZStack (英文) 則可以將視圖相互疊放。然后,合并 Stack 視圖以構(gòu)建更為復(fù)雜的布局。這三種 Stack 及其對齊和間隔屬性、視圖修飾符與 Spacer (英文) 視圖相結(jié)合,可以實現(xiàn)極大的布局靈活性。
你通常使用 Stack 視圖作為其他容器視圖中的構(gòu)建塊。例如,List (英文) 通常包含 Stack 視圖,你用它來布置每行中的視圖。
有關(guān)使用 Stack 視圖布置視圖的更多信息,請參閱“使用 Stack 視圖構(gòu)建布局”。
重復(fù)視圖或視圖組
你還可以使用 HStack (英文)、VStack (英文)、LazyHStack (英文) 和 LazyVStack (英文) 來重復(fù)視圖或視圖組。在 ScrollView (英文) 中放置一個 Stack 視圖,這樣你的內(nèi)容便可以擴(kuò)展到其容器的邊界之外。用戶可以同時水平滾動、垂直滾動或雙向滾動。
堆棧視圖和惰性堆棧具有相似的功能,可能給人感覺它們能夠互換,但是,它們在不同情況下有各自的優(yōu)勢。堆棧視圖會一次性載入所有子視圖,布局性能快且可靠,因為系統(tǒng)在載入每個子視圖時就知道它們的大小和形狀。惰性堆棧會為了性能而損失一定程度的布局正確性,原因是系統(tǒng)僅在子視圖可見時才會計算它們的幾何結(jié)構(gòu)。
在選擇要使用的堆棧視圖類型時,請始終先選擇標(biāo)準(zhǔn)堆棧視圖,并且僅在對代碼進(jìn)行性能分析后證明值得提升性能時,才應(yīng)切換到惰性堆棧。有關(guān)惰性堆棧視圖以及如何衡量 App 的視圖載入性能的更多信息,請參閱“創(chuàng)建高性能的可滾動堆棧”。
在二維布局中放置視圖
要同時以水平方式和垂直方式布置視圖,請使用 LazyVGrid (英文) 或 LazyHGrid (英文)。若要布置自然顯示在正方形容器中的內(nèi)容 (例如,圖像圖庫),網(wǎng)格是一個非常好的容器選擇。另外,若要放大用戶界面布局以在較大的設(shè)備上顯示,網(wǎng)格也是一個不錯的選擇。例如,聯(lián)系信息目錄可能適合以列表或垂直堆棧的形式顯示在 iPhone 上,但是,如果將目錄放大以在更大的設(shè)備 (例如 iPad 或 Mac) 上顯示時,采用網(wǎng)格布局的形式可能更自然。
與堆棧視圖一樣,SwiftUI 網(wǎng)格視圖并不包含固有的滾動視口;如果相關(guān)內(nèi)容可能超出可用的空間,應(yīng)將它們置于一個 ScrollView (英文) 中。
顯示數(shù)據(jù)集并與之交互
SwiftUI 中的 List (英文) 視圖在概念上與 LazyVStack (英文) 和 ScrollView (英文) 的組合類似,但默認(rèn)情況下會在內(nèi)容元素之間和周圍應(yīng)用適合平臺的視覺樣式。例如,在 iOS 上運(yùn)行時,List (英文) 的默認(rèn)配置會在各行之間添加分隔線,并且如果 List 包含在 NavigationView (英文) 里,它會給具有導(dǎo)航功能的內(nèi)容元素繪制詳情指示符。
List (英文) 視圖還支持為常見任務(wù) (例如,插入、重新排序和移除項目) 提供與平臺相對應(yīng)的交互。例如,通過將 onDelete(perform:) (英文) 修飾符添加到 List (英文) 中的 ForEach (英文),可以實現(xiàn)系統(tǒng)標(biāo)準(zhǔn)的輕掃以刪除交互。
與 LazyHStack (英文) 和 LazyVStack (英文) 一樣,SwiftUI List (英文) 中的行也會以惰性方式載入,沒有對應(yīng)的非惰性載入方式。List 本身會在必要時滾動,你不需要將它們包裝在 ScrollView (英文) 中。
為數(shù)據(jù)輸入組合視圖和控件
使用 Form (英文) 可以組合系統(tǒng)標(biāo)準(zhǔn)控件,構(gòu)建數(shù)據(jù)輸入界面、設(shè)置或偏好設(shè)置窗口。
與所有 SwiftUI 視圖一樣,表單以平臺適用的方式顯示其內(nèi)容。請注意,Form (英文) 中的控件布局可能因平臺不同而存在很大的差異。例如,在 iOS 上,Form (英文) 中的 Picker (英文) 控件會添加導(dǎo)航,從而在單獨(dú)屏幕上顯示選擇器的選項,而在 macOS 上,同一個 Picker (英文) 控件會顯示彈出式按鈕或一組單選按鈕。
本文題目:創(chuàng)新互聯(lián)IOS教程:為你的內(nèi)容選擇容器視圖
文章出自:http://m.5511xx.com/article/cogohjp.html


咨詢
建站咨詢
