堆叠布局 API
VStack、HStack、ZStack、Lazy stacks、Spacer 和 Divider。
VStack / HStack / ZStack / LazyVStack / LazyHStack / Spacer / Divider。
#VStack
签名
已复制
VStack(content=None, alignment='center', spacing=None)
参数
| 参数 | 类型 | 说明 |
|---|---|---|
content | list[View] \| None | 子视图列表;亦可配合上下文管理器收集子级。 |
alignment | str | 横轴对齐(如 center、leading、trailing 等,由运行时映射)。 |
spacing | 数值 \| None | 子视图间距;None 为系统默认。 |
示例
已复制
import appui
def body():
with appui.VStack(spacing=12) as root:
appui.Text("标题").font("title2").bold()
appui.Text("说明文案").font("body").foreground_color("secondaryLabel")
return root.padding()
appui.run(body, presentation="sheet")
#HStack
签名
已复制
HStack(content=None, alignment='center', spacing=None)
参数
与 VStack 相同;对齐沿纵轴解释。
示例
已复制
import appui
def body():
return appui.HStack([
appui.Image(system_name="star.fill").foreground_color("systemYellow"),
appui.Text("收藏").font("headline"),
appui.Spacer(),
appui.Text("详情").font("subheadline"),
], spacing=8).padding()
appui.run(body, presentation="sheet")
#ZStack
签名
已复制
ZStack(content=None, alignment='center')
参数
| 参数 | 类型 | 说明 |
|---|---|---|
content | list[View] \| None | 层叠子视图,后者绘制在上层。 |
alignment | str | center、leading、trailing、top、bottom、topLeading、topTrailing、bottomLeading、bottomTrailing。 |
示例
已复制
import appui
def body():
return appui.ZStack([
appui.RoundedRectangle(corner_radius=16).fill("systemBlue").frame(width=200, height=120),
appui.VStack([
appui.Text("前景").foreground_color("white").bold(),
appui.Text("叠放").font("caption").foreground_color("white"),
]),
], alignment="center").padding()
appui.run(body, presentation="sheet")
#LazyVStack
签名
已复制
LazyVStack(content=None, alignment='center', spacing=None)
参数
同 VStack。惰性创建子项,适合长列表中的纵向堆叠。
示例
已复制
import appui
def body():
return appui.ScrollView(
appui.LazyVStack(
content=[appui.Text(f"行 {i}") for i in range(40)],
spacing=6,
),
axes="vertical",
)
appui.run(body, presentation="sheet")
#LazyHStack
签名
已复制
LazyHStack(content=None, alignment='center', spacing=None)
参数
同 LazyVStack,轴向为水平。
示例
已复制
import appui
def body():
return appui.ScrollView(
appui.LazyHStack(
content=[appui.Text(f"·{i}") for i in range(30)],
spacing=10,
),
axes="horizontal",
shows_indicators=True,
)
appui.run(body, presentation="sheet")
参阅:HStack、ScrollView
#Spacer
签名
已复制
Spacer(min_length=None, minLength=None)
参数
| 参数 | 类型 | 说明 |
|---|---|---|
min_length / minLength | 数值 \| None | 在所在堆栈中占据弹性空白的最小长度。 |
示例
已复制
import appui
def body():
return appui.HStack([
appui.Text("左"),
appui.Spacer(min_length=24),
appui.Text("右"),
]).padding()
appui.run(body, presentation="sheet")
#Divider
签名
已复制
Divider()
参数
无参数构造。
示例
已复制
import appui
def body():
return appui.VStack([
appui.Text("上"),
appui.Divider(),
appui.Text("下"),
], spacing=8).padding()
appui.run(body, presentation="sheet")