struct LazyHStack (英文)
struct LazyVStack (英文)
Lazy
(英文) 和 Lazy
(英文) 视图都可以显示整理为多个逻辑部分的视图组,从而分别将其子项排列成水平生长和垂直生长的直线。之所以称这些 stack 为“惰性”,是因为 stack 视图仅在需要在屏幕上渲染项目时才会创建项目。与 stack 视图一样,惰性 stack 不包括对滚动的任何固有支持,并且你应将惰性 stack 视图包装在 Scroll
(英文) 容器中。
若要对惰性 stack 视图中的内容或数据进行分组,请使用 Section
(英文) 实例作为已分组视图集合的容器。Section
(英文) 视图本身没有任何直观的表示形式,但是可以包含页眉和页脚视图,这些视图可随着 stack 的内容进行滚动,或者你可以将它们固定在 Scroll
(英文) 的顶部或底部。
注释
使用 Section
(英文) 视图可以在 stack 视图或惰性 grid、List
(英文)、Command
(英文)、Form
(英文) 和多个其他容器类型中获得平台适用的分组。
本文中的代码示例构建了一个用户界面来直观地呈现三原色的不同色度。Stack 中的每个部分都代表一种原色,其中包含五个子视图,每个子视图都显示该颜色的一个不同变体。
与 stack 中包含的视图一样,在通过 For
(英文) 迭代时,每个 Section
(英文) 都必须经过唯一标识。在此示例中,Color
实例代表各个部分,Shade
实例代表一个部分中每种颜色的色度。Color
和 Shade
均遵从 Identifiable
(英文) 协议。
struct ColorData: Identifiable {
let id = UUID()
let name: String
let color: Color
let variations: [ShadeData]
struct ShadeData: Identifiable {
let id = UUID()
var brightness: Double
}
init(color: Color, name: String) {
self.name = name
self.color = color
self.variations = stride(from: 0.0, to: 0.5, by: 0.1)
.map { ShadeData(brightness: $0) }
}
}
下面的 Color
为每个原色设置了一个包含 Color
实例的数组。Lazy
(英文) 迭代颜色数据的数组以创建各个部分,然后迭代 variations
以根据色度创建视图。
struct ColorSelectionView: View {
let sections = [
ColorData(color: .red, name: "Reds"),
ColorData(color: .green, name: "Greens"),
ColorData(color: .blue, name: "Blues")
]
var body: some View {
ScrollView {
LazyVStack(spacing: 1) {
ForEach(sections) { section in
Section(header: SectionHeaderView(colorData: section)) {
ForEach(section.variations) { variation in
section.color
.brightness(variation.brightness)
.frame(height: 20)
}
}
}
}
}
}
}
使用 Section
(英文) 视图对数据进行分组,并使用 header
和 footer
属性传入页眉或页脚视图。此示例实施了一个 Section
作为页眉视图,其中包含一个半透明的 stack 视图以及 Text
(英文) 标签中该部分颜色的名称。
struct SectionHeaderView: View {
var colorData: ColorData
var body: some View {
HStack {
Text(colorData.name)
.font(.headline)
.foregroundColor(colorData.color)
Spacer()
}
.padding()
.background(Color.primary
.colorInvert()
.opacity(0.75))
}
}
有关使用 For
(英文) 在 stack 中重复视图的更多信息,请参阅“创建高性能的可滚动 Stack”。
默认情况下,一个部分的页眉和页脚视图将与该部分的内容同步滚动。如果你想要让页眉和页脚视图始终保持可见 (无论相关部分的顶部或底部是否可见),可以为惰性 stack 视图的 pinned
属性指定一组 Pinned
(英文)。
LazyVStack(spacing: 1, pinnedViews: [.sectionHeaders]) {
// ...
}
在 Lazy
(英文) 容器中,页眉附加到顶部,页脚附加到底部。在 Lazy
(英文) 容器中,页眉附加到前缘,页脚附加到后缘。
通过此更改,在用户开始滚动时,相关部分的页眉会固定到视图顶部。
struct LazyHStack (英文)
struct LazyVStack (英文)
533是什么意思 | 花痴是什么意思 | 12月2日什么星座 | 鸡腿为什么这么便宜 | 先天是什么意思 |
羊肠小道什么意思 | 孩子打嗝是什么原因 | 沙龙会是什么意思 | 洋葱炒什么好吃 | 头响脑鸣是什么原因引起的 |
张嘴睡觉有什么危害 | 乳腺增生什么意思 | 身份证后四位代表什么 | 梦见手链断了是什么意思 | 牛筋草有什么功效 |
占有欲什么意思 | 地委书记是什么级别 | 材料化学属于什么类 | 鼻子干燥吃什么中成药 | 釜底抽薪是什么计 |
血小板太高会导致什么hcv9jop2ns3r.cn | 甲状腺3类是什么意思hcv9jop4ns9r.cn | 8月19号是什么星座hcv8jop4ns3r.cn | 蛇盘疮什么原因引起的hcv7jop4ns6r.cn | 为什么智齿老是发炎hcv8jop9ns3r.cn |
肠道胀气吃什么药hcv8jop9ns0r.cn | 八府巡按是什么官huizhijixie.com | 什么溪流hcv8jop3ns6r.cn | 豆面是什么hcv8jop5ns9r.cn | 戾气是什么意思shenchushe.com |
轻度郁症有什么表现hcv8jop9ns7r.cn | 日本人什么时候投降的hcv8jop1ns4r.cn | 王羲之兰亭序是什么字体hcv9jop1ns2r.cn | 减肥吃什么最好520myf.com | 口腔医学学什么hcv9jop8ns3r.cn |
阴囊炎用什么药治疗hcv8jop4ns3r.cn | 惠什么意思kuyehao.com | 低压高吃什么降压药好hcv9jop2ns3r.cn | 蒲公英可以和什么一起泡水喝hcv9jop4ns5r.cn | 庚日是什么意思啊hcv8jop9ns2r.cn |