Skip to content

Tag 标签 ​

用于标记和选择的紧凑标签。比按钮更小,支持语义类型、描边、圆角胶囊与关闭按钮。

契约源:lh-ui-core/specs/tag.json · 黄金用例:lh-ui-core/cases/tag.json(6 条,已翻译为 XCTest,macOS 宿主即可运行)

类型 ​

六种类型决定底色与文字色。plain 为描边浅底形态(语义浅底 + 语义描边)。

9:41Tag 类型
默认主要成功
警告危险信息
描边主要描边成功

HTML 模拟预览(iOS / SwiftUI 外观),非真机渲染

swift
LhTag(text: "主要", type: .primary)
LhTag(text: "描边成功", type: .success, plain: true)

尺寸与圆角 ​

三档尺寸映射到 tag.height / paddingHorizontal / fontSize 令牌;round 把圆角换成高度的一半(胶囊)。

9:41Tag 尺寸
小号中号大号
方角圆角

HTML 模拟预览(iOS / SwiftUI 外观),非真机渲染

可关闭 ​

closable 在右侧显示关闭按钮,点击触发 onClose(黄金用例 closable-tap-emits-onclose)。

9:41Tag 关闭
可关闭可关闭

HTML 模拟预览(iOS / SwiftUI 外观),非真机渲染

swift
LhTag(text: "可关闭", type: .primary, closable: true) {
  // onClose
}

API ​

Props ​

属性说明类型默认值
text标签文字String—
type标签类型,决定底色与文字色LhTagType.default
size标签尺寸,映射到尺寸令牌LhTagSize.medium
plain是否为描边浅底形态Boolfalse
round是否为胶囊圆角(半径 = 高度 / 2)Boolfalse
closable是否显示关闭按钮Boolfalse
onClose关闭按钮点击回调(() -> Void)?nil

LhTagType ​

值底色文字色
.defaultcolor.background.default + color.border.base 描边color.text.primary
.primarycolor.primary.defaultcolor.onPrimary
.successcolor.success.defaultcolor.onPrimary
.warningcolor.warning.defaultcolor.onPrimary
.dangercolor.danger.defaultcolor.onPrimary
.infocolor.info.defaultcolor.onPrimary

plain = true 时:底色取 color.<type>.bg、描边与文字取 color.<type>.default(.default 类型忽略 plain,黄金用例 default-type-renders-text)。

LhTagSize ​

值heightpaddingHorizontalfontSize
.smalltag.height.small(20pt)tag.paddingHorizontal.small(8pt)tag.fontSize.small(12pt)
.mediumtag.height.medium(24pt)tag.paddingHorizontal.medium(12pt)tag.fontSize.medium(13pt)
.largetag.height.large(28pt)tag.paddingHorizontal.large(16pt)tag.fontSize.large(14pt)

令牌对照 ​

令牌用途
tag.height.{small,medium,large}三档高度
tag.paddingHorizontal.{small,medium,large}三档横向内边距
tag.fontSize.{small,medium,large}三档字号
tag.borderRadius / tag.borderWidth默认圆角(跟随 radius.small)与描边宽度
tag.gap文字与关闭按钮间距(跟随 spacing.xs)
color.{primary,success,warning,danger,info}.{default,bg}语义类型底色与描边浅底
color.onPrimary语义类型文字色
color.background.default / color.text.primary / color.border.base默认类型三色

黄金用例对照 ​

case id断言本地测试
default-type-renders-text默认类型中性底/文字,忽略 plaintestDefaultTypeUsesNeutralTokens / testDefaultTypeIgnoresPlain
primary-type-uses-primary-tokens主色类型消费主色与 onPrimarytestPrimaryTypeUsesPrimaryTokens
plain-uses-bg-tokensplain 消费语义 bg 与语义描边testPlainUsesBgTokens
small-size-uses-small-tokens小号消费 small 尺寸令牌testSmallSizeUsesSmallTokens
round-makes-radius-half-heightround 圆角 == 高度 / 2testRoundMakesRadiusHalfHeight
closable-tap-emits-onclose关闭按钮触发 onClosetestClosableTagInitAndRender(手势断言需模拟器)

另有暗色专项:testDarkColorsComeFromDarkTokens / testPlainInDarkUsesDarkBgTokens / testDimensionsAreIdenticalInDarkMode。

bash
swift test --filter LhTagTests    # macOS 宿主即可跑,无需模拟器