在 SwiftUI 中,(覆盖)和 (背景)修饰符的核心区别在于它们在 Z 轴(层级)上的位置。 简单来说: Overlay:放在视图的上面(前景)。 Background:放在视图的下面(背景)。 它们都会默认采用被修饰视图(父视图)的尺寸。 --- 1. 视觉层级模型 想象一个三明治或者图层堆叠: | 层级 (Z-Index) | 组件 | 描述 | | :--- | :--- | :--- | | 最上层 | Overlay | 就像贴在照片上的贴纸(如:角标、水印)。 | | 中间层 | 原始视图 (Self) | 你正在修饰的那个 View(如:一张图片、一段文字)。 | | 最底层 | Background | 就像照片底下的衬纸(如:填充色、卡片背景)。 | --- 2. 详细对比 Background (背景) 位置:位于原始视图的后方。 用途:用于设置背景颜色、渐变、形状、阴影等。 交互:通常不会阻挡对原始视图的点击(因为在后面),除非原始视图是透明的。 常见场景:按钮背景色、卡片圆角背景。 Overlay (覆盖) 位置:位于原始视图的前方。 用途:用于添加角...