overlay

overlay 修饰符用于在当前视图的上方叠加一个额外视图,形成层叠的视觉效果。这在添加装饰元素(如徽章)、加载指示器、半透明遮罩或交互按钮等场景中非常有用。


类型定义

1overlay?: VirtualNode | {
2  alignment: Alignment
3  content: VirtualNode
4}

参数说明

1. 简洁形式:直接传入 VirtualNode

直接将一个视图叠加在当前视图之上,默认对齐方式为 居中(center)

1<Image
2  imageUrl="https://example.com/avatar.png"
3  overlay={<Circle fill="black" opacity={0.2} />}
4/>

该例会在头像图上方添加一个半透明黑色圆形遮罩。


2. 对象形式:带对齐方式的 Overlay

提供 contentalignment,用于指定叠加视图的内容与对齐方式。

对象结构:

1{
2  alignment: Alignment
3  content: VirtualNode
4}

Alignment 可选值包括:

  • "top" | "bottom" | "leading" | "trailing"
  • "topLeading" | "topTrailing" | "bottomLeading" | "bottomTrailing"
  • "center"

示例:右上角徽章叠加

1<Image
2  imageUrl="https://example.com/avatar.png"
3  overlay={{
4    alignment: "topTrailing",
5    content: <Circle
6      fill="red"
7      frame={{
8        width: 10,
9        height: 10
10      }}
11    />
12  }}
13/>

该例会在图像右上角叠加一个红色圆形小徽章。


行为说明

  • overlay 的内容会绘制在目标视图之上。
  • 叠加内容不会改变原始视图的尺寸与布局。
  • 若未设置 clip,叠加内容可能超出边界。

常见用途

  • 添加通知角标或状态徽章
  • 显示加载指示器或遮罩层
  • 高亮视图特定区域
  • 显示动画图标或文字提示

示例:居中文字叠加

1<Rectangle
2  fill="blue"
3  frame={{
4    width: 100,
5    height: 100
6  }}
7  overlay={{
8    alignment: "center",
9    content: <Text foregroundColor="white">你好</Text>
10  }}
11/>

该示例会在一个蓝色矩形中央叠加白色文字“你好”。


总结

参数 说明
VirtualNode 要叠加的视图内容(默认居中)
alignment 可选。叠加视图在目标视图中的位置
content 要显示的叠加内容视图

overlay 是构建多层 UI、实现状态标记、视觉效果叠加等的核心修饰符之一,可灵活组合使用,适配各种视觉需求。