同心圆矩形(ConcentricRectangle)
ConcentricRectangle 是 iOS 26+ 引入的一种同心矩形(Concentric Rectangle)形状视图,用于创建具有“向内递进圆角”特性的矩形结构。
该形状特别适合用于:
- 现代玻璃风格按钮
- 卡片容器背景
- 交互裁剪区域(命中测试形状)
- 玻璃过渡动画遮罩
- 动态层级 UI 结构
在 Scripting 中,ConcentricRectangle 既可以作为一个独立 Shape 视图渲染,也可以作为:
clipShapebackgroundcontentShape
中的专用形状类型使用。
一、ConcentricRectangle 基本定义
说明
-
ConcentricRectangle是一个标准Shape组件 -
同时支持:
- 填充(fill)
- 描边(stroke)
- 路径裁剪(trim)
- 复杂角样式控制(ConcentricRectangleShape)
-
该视图始终在其父视图的
frame内部进行布局与渲染 -
仅支持 iOS 26 及以上系统
二、角样式系统:EdgeCornerStyle
ConcentricRectangle 的核心能力来自其角样式系统 EdgeCornerStyle,用于描述单个角的行为方式。
1. 固定圆角模式(fixed)
用于创建传统固定半径圆角矩形。
参数说明:
该模式适合传统静态卡片、按钮等场景。
2. 同心递进圆角模式(concentric)
用于创建随尺寸递进变化的“同心圆角效果”。
参数说明:
该模式适用于:
- 玻璃按钮
- 动态尺寸卡片
- 层级叠加组件
- 动态动画遮罩
3. 简写模式
等价于:
适用于无需手动控制最小值的快速使用场景。
三、ConcentricRectangleShape(角分布规则)
ConcentricRectangleShape 用于描述 每个角是否统一控制,或分别控制。
该类型支持 7 种结构组合模式。
1. 全角统一模式(最常用)
参数说明:
示例:
2. 四个角完全独立定义
适用于:
- 不规则异形卡片
- 特殊边角 UI
- 半圆角容器
3. 底部统一角
适用于:
- 上直角,下圆角卡片
- 底部弹出面板背景
4. 顶部统一角
适用于:
- 顶部弹窗
- 顶部玻璃标题栏
5. 顶部与底部统一组合
6. 左侧统一角
7. 左右统一组合
四、通用 Shape 属性(ShapeProps)
1. trim(路径裁剪)
用于路径绘制动画、环形裁剪、渐进描边等效果。
2. fill(填充)
支持:
- 纯色
- 动态材质
- 渐变样式
3. stroke(描边)
五、ConcentricRectangle 在 View Modifiers 中的使用
1. 作为 clipShape 使用
示例:
用于:
- 裁剪真实内容显示区域
- 玻璃过渡遮罩
- 动态蒙版
2. 作为 background 使用
示例:
3. 作为 contentShape 使用(命中测试区域)
用于控制点击、悬停、拖拽等交互命中区域。
六、完整示例解析
示例代码:
该示例实现了:
- 外部容器为固定圆角矩形
- 内部使用同心递进圆角矩形
- 内外形成层级差异与视觉纵深感
- 红色填充用于强调 ConcentricRectangle 的实际形态
七、设计与实现注意事项
-
minimum不应超过实际高度或宽度的一半 -
同心圆角更适合与:
glassmaterialbluropacity等视觉效果配合使用
-
作为
contentShape使用时,仅影响点击区域,不影响视觉裁剪 -
作为
clipShape使用时,会真实裁剪子视图渲染内容
