swiftui - 如何在整个 App 中更改背景颜色?
问题描述
有没有办法在一个地方设置整个应用程序的背景(每个视图的默认背景相同)?例如在SceneDelegate中?
解决方案
创建一个自定义ViewModifier
,输入您的颜色,并将其添加到您的视图中。例如,如果您希望所有视图都为橙色,请执行以下操作:
struct BackgroundColorStyle: ViewModifier {
func body(content: Content) -> some View {
return content
.background(Color.orange)
}
}
用法是:
Text("Hello world!").modifier(BackgroundColorStyle())
现在,您可以(并且可能应该)对此进行扩展以用于明/暗模式。在这种情况下,您可以使用环境变量ColorSchmem
:
struct BackgroundColorStyle: ViewModifier {
@Environment (\.colorScheme) var colorScheme:ColorScheme
func body(content: Content) -> some View {
if colorScheme == .light {
return content
.background(Color.darkGrey)
} else {
return content
.background(Color.white)
}
}
}
无论哪种方式,每个View
使用此修饰符的人都在一个地方定义了它们的背景颜色。如果你想定义一个边框和背景颜色,同样的事情。
推荐阅读
- php - 在 Mysql Date 中转换 datepicker - PHP
- kubernetes - 将入口部署为在 raspberrypi kubernetes 集群上的端口 80 上侦听的恶魔集需要什么
- sql - 缩放运算符 (*) 在 PostgreSQL 中如何工作?
- python - 安装pygame的问题
- java - 使用 Liquibase 休眠 @ManyToOne 和 @OneToMany
- javascript - 使用 POST 方法的 AJAX 请求不起作用
- python - 如何使用 Python Selenium 使用多列的条件有条件地从表中单击链接?
- html - 在表格的左右对齐列中创建等距列
- apache-spark - 在 foreachPartition 中访问的广播值
- php - Laravel 5.6 - POST 和 AngularJS 的混合