release(ios): 0.2.2 构建 9 修复消息发送遮挡并中性化石墨灰阶
- 消息中心发送入口从被标签栏盖住的底部操作条移到导航栏右侧,发信恢复可用 - 停用态主按钮保留主色淡底与同色描边,与次级按钮拉开层级 - 消息行删除改安静线性图标,去掉一屏红块 - 缺数据读数统一为短横,卡片延迟补空格单位 - 中性灰阶改为严格 R=G=B,浅色主题不再读出冷调;图标石墨底同步去蓝 - 详情页延迟量表改用与卡片同一算法,身份信息值改为右对齐 - 标签加号按钮与输入框同高同圆角
This commit is contained in:
@@ -21,10 +21,11 @@ public struct AIButtonStyle: ButtonStyle {
|
||||
}
|
||||
|
||||
func backgroundColor(isEnabled: Bool) -> Color {
|
||||
switch self {
|
||||
case .primary, .secondary, .danger:
|
||||
return isEnabled ? kindBackground : AITheme.control
|
||||
}
|
||||
if isEnabled { return kindBackground }
|
||||
// 禁用态:实心主色按钮保留主色淡版,其余退回中性灰。
|
||||
return self == .primary
|
||||
? AITheme.primary.opacity(AITheme.disabledFillOpacity)
|
||||
: AITheme.control
|
||||
}
|
||||
|
||||
private var kindBackground: Color {
|
||||
@@ -34,6 +35,13 @@ public struct AIButtonStyle: ButtonStyle {
|
||||
case .danger: return AITheme.danger
|
||||
}
|
||||
}
|
||||
|
||||
/// 禁用态下主按钮必须还能看出"这是主行动"。
|
||||
/// 之前三种 kind 禁用后都塌成同一块 control 灰,表单里"取消"和"保存"长得一模一样,
|
||||
/// 用户只能靠文字猜哪个是提交。这里让实心主色按钮改用同色相淡填充 + 描边,灰底次按钮不套。
|
||||
var usesTintedDisabledTreatment: Bool {
|
||||
self == .primary
|
||||
}
|
||||
}
|
||||
|
||||
public enum Size: Hashable {
|
||||
@@ -74,6 +82,8 @@ public struct AIButtonStyle: ButtonStyle {
|
||||
case .toolbarInline: AITheme.toolbarButtonHeight
|
||||
}
|
||||
|
||||
let isTintedDisabled = kind.usesTintedDisabledTreatment && !isEnabled
|
||||
|
||||
configuration.label
|
||||
.labelStyle(.titleAndIcon)
|
||||
.font(
|
||||
@@ -94,7 +104,7 @@ public struct AIButtonStyle: ButtonStyle {
|
||||
AnyShapeStyle(kind.backgroundColor(isEnabled: isEnabled))
|
||||
)
|
||||
.shadow(
|
||||
color: (kind == .secondary || !isEnabled) ? .clear : .black.opacity(0.10),
|
||||
color: (kind == .secondary || isTintedDisabled) ? .clear : .black.opacity(0.10),
|
||||
radius: 12,
|
||||
x: 0,
|
||||
y: 5
|
||||
@@ -111,9 +121,11 @@ public struct AIButtonStyle: ButtonStyle {
|
||||
style: .continuous
|
||||
)
|
||||
.strokeBorder(
|
||||
size == .toolbarInline && kind == .primary
|
||||
? AITheme.primary.opacity(0.28)
|
||||
: (kind == .secondary || !isEnabled ? AITheme.line : .clear)
|
||||
isTintedDisabled
|
||||
? AITheme.primary.opacity(AITheme.disabledStrokeOpacity)
|
||||
: size == .toolbarInline && kind == .primary
|
||||
? AITheme.primary.opacity(0.28)
|
||||
: (kind == .secondary || !isEnabled ? AITheme.line : .clear)
|
||||
)
|
||||
}
|
||||
.scaleEffect(configuration.isPressed ? Self.pressedScale : 1)
|
||||
|
||||
Reference in New Issue
Block a user