PythonIDE Docs
中文
简体中文

堆叠布局 API

VStack、HStack、ZStack、Lazy stacks、Spacer 和 Divider。

VStack / HStack / ZStack / LazyVStack / LazyHStack / Spacer / Divider。


#VStack

签名

text
VStack(content=None, alignment='center', spacing=None)

参数

参数类型说明
contentlist[View] \| None子视图列表;亦可配合上下文管理器收集子级。
alignmentstr横轴对齐(如 centerleadingtrailing 等,由运行时映射)。
spacing数值 \| None子视图间距;None 为系统默认。

示例

python
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")

参阅HStackZStackLazyVStack


#HStack

签名

text
HStack(content=None, alignment='center', spacing=None)

参数

VStack 相同;对齐沿纵轴解释。

示例

python
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")

参阅VStackSpacer


#ZStack

签名

text
ZStack(content=None, alignment='center')

参数

参数类型说明
contentlist[View] \| None层叠子视图,后者绘制在上层。
alignmentstrcenterleadingtrailingtopbottomtopLeadingtopTrailingbottomLeadingbottomTrailing

示例

python
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")

参阅OverlayVStack


#LazyVStack

签名

text
LazyVStack(content=None, alignment='center', spacing=None)

参数

VStack。惰性创建子项,适合长列表中的纵向堆叠。

示例

python
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")

参阅LazyHStackScrollView


#LazyHStack

签名

text
LazyHStack(content=None, alignment='center', spacing=None)

参数

LazyVStack,轴向为水平。

示例

python
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")

参阅HStackScrollView


#Spacer

签名

text
Spacer(min_length=None, minLength=None)

参数

参数类型说明
min_length / minLength数值 \| None在所在堆栈中占据弹性空白的最小长度。

示例

python
import appui

def body():
    return appui.HStack([
        appui.Text("左"),
        appui.Spacer(min_length=24),
        appui.Text("右"),
    ]).padding()

appui.run(body, presentation="sheet")

参阅HStackVStack


#Divider

签名

text
Divider()

参数

无参数构造。

示例

python
import appui

def body():
    return appui.VStack([
        appui.Text("上"),
        appui.Divider(),
        appui.Text("下"),
    ], spacing=8).padding()

appui.run(body, presentation="sheet")

参阅VStackSection