SwiftUI - 重音,前景色和色调之间的区别?

Posted

技术标签:

【中文标题】SwiftUI - 重音,前景色和色调之间的区别?【英文标题】:SwiftUI - difference between accent, foreground and tint color? 【发布时间】:2021-07-15 17:06:34 【问题描述】:

谁能给我解释一下ForegroundTintAccent颜色的区别?

语言上:

Tint 表示阴影 Accent表示鲜艳的色彩 前景表示常规颜色

以编程方式:

什么是色调 前景是改变文本/视图颜色的原色 强调色是辅助色

另外,为什么 Accent 在下面的代码中不起作用?

Text("Accent Color")
.accentColor(.blue)

【问题讨论】:

Color.accentColor 是按钮和其他控件的全局颜色,不包括文本。但是,您可以将示例更改为 .foregroundStyle(Color.accentColor) 以工作。 "tint" 来自 UIKIt - 在 SwiftUI 中它被称为 "accent"。您可以使用.accentColor 设置“accentColor” - 但同样,这仅适用于控件。 "foregroundColor" 因视图而异。所以对于Text,它会改变文本颜色。然后对于Circle,它会改变填充颜色。 前景色用于文本,强调色用于按钮,色调用于 UIKit 明白了,谢谢! 【参考方案1】:

ios 15 Beta 中,有一种设置色调的新方法。

文档说:

强调色

当您想将广泛的主题颜色应用到应用程序的用户界面时,请使用 AccentColor(_:)。某些样式的控件使用强调色作为默认色调。

色调

使用此方法覆盖此视图的默认强调色。与可以被用户偏好覆盖的应用的强调色不同,色调始终受到尊重,应该用作为控件提供额外含义的一种方式。

前景色

显示此视图时使用的前景色。传递 nil 以删除任何自定义前景色并允许系统或容器提供自己的前景色。如果容器特定的覆盖不存在,则系统使用原色。

前景色通常应用于基于文本的视图(文本、标签等)图像(作为模板)。

强调/色调颜色应用于控件(包括控件中的图像,例如按钮、选择器等)。

Accent Color 设置应用的全局整体颜色,tint 用于一次性覆盖控件。

另一种说法是前景色适用于所有非交互式项目,重音/色调适用于交互式项目。

【讨论】:

嘿乍得。似乎不推荐使用accentColor(_:)。但是我看不到设置全局强调色的替代方法,也许是因为 TabBar?谢谢

以上是关于SwiftUI - 重音,前景色和色调之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中根据 API 调用设置前景色

如何更改应用程序色调颜色(新的 SwiftUI 生命周期应用程序)?

SwiftUI:如何更改 NavigationView 的色调(背景颜色)?

如何根据用户输入更改 DataGrid 前景色?

三元运算符问题 SwiftUI

Swift中结构和类之间的区别,SwiftUI也没有更新