当前位置: 首页 > 知识库问答 >
问题:

SwiftUI - 如何更改视图的背景颜色?

田骁
2023-03-14

我开始尝试SwiftUI,我感到惊讶的是,更改视图的背景颜色似乎并不简单。如何使用SwiftUI?


共有3个答案

郎飞龙
2023-03-14

填满整个屏幕:

var body: some View {
    Color.green.edgesIgnoringSafeArea(.all)
}
云瑞
2023-03-14

您可以这样做:

.background(Color.black)

在你的视野周围。

例如。从默认模板(我将其包含在一个组中):

    var body: some View {
        VStack {
          Text("Hello SwiftUI!")
        }
       .background(Color.black)
    }

要为其添加一些不透明度,您还可以添加. opacity方法:

.background(Color.black.opacity(0.5))

您还可以通过CMD单击视图并单击显示SwiftUI检查器来使用视图的检查元素

常彭薄
2023-03-14
匿名用户

(从 Xcode 版本 13 开始)

我不确定最初的海报是指整个屏幕的背景色还是单个视图的背景色。所以我就加上这个设置整个屏幕背景颜色的答案。

var body: some View {
    ZStack {
            Color.purple
                .ignoresSafeArea()
            
            // Your other content here
            // Other layers will respect the safe area edges
    }
}

我添加了。ignoresSafeArea()否则,它将在安全区域边距处停止。

var body: some View {
    Color.purple
        .ignoresSafeArea(.vertical) // Ignore just for the color
        .overlay(
            VStack(spacing: 20) {
                Text("Overlay").font(.largeTitle)
                Text("Example").font(.title).foregroundColor(.white)
        })
}

注意:保留很重要。只在颜色上忽略安全区域,这样您的主要内容也不会忽略安全区域边缘。

iOS 15/Xcode 13 对样式在安全区域边缘的工作方式进行了一些更改。

这为您提供了更多设置背景颜色/样式的选项。

什么是风格?

样式可以是:

    < li >颜色 < li >材质(模糊效果) < li >分层视图(。次要,。三级,。四元) < li >渐变

因为< code>VStack的背景接触到安全区域的边缘,所以紫色会渗入安全区域。

var body: some View {
    VStack {
        Text("Hello, World!")
        Divider()
        Spacer()
    }
    .background(Color.purple)
}

在 iOS 15 中,选项卡视图不再是半透明的。这意味着背景色将直接渗入其中。

如果您想为您的TabView提供一个自定义样式,您可以添加另一个与底部安全区域边缘相接触的样式,这样它就会渗入到您的TabView中。例如:

var body: some View {
    TabView {
        VStack {
            Text("Hello, World!")
            Divider()
            Spacer()
            // Bleeds into TabView
            Rectangle()
                .frame(height: 0)
                .background(.thinMaterial)
        }
        .background(Color.purple)
        .tabItem {
            Text("Tab 1")
            Image(systemName: "wifi")
        }
    }
}

发生在TabView上的同样的事情也会发生在NavigationView上。

要自定义导航视图样式,请添加一个将接触顶部安全区域边缘的样式,该样式将渗入导航视图:

var body: some View {
    NavigationView {
        VStack {
            // Bleeds into NavigationView
            Rectangle()
                .frame(height: 0)
                .background(.ultraThinMaterial)
            Text("Hello, World!")
            Divider()
            Spacer()
        }
        .background(Color.purple)
        .navigationTitle(Text("Style"))
    }
}

我完全接受实现这一目标的其他方式。如果你知道其他方法,请留下评论或编辑这个答案。

 类似资料:
  • 我的文件夹中有这个xml。 我基本上是用它来为任何视图设置圆角,我将其设置为背景。但我想知道的是,如何保持该视图的颜色/背景色调动态。因为假设我有三个视图,它们都需要圆角,但都需要不同的颜色,所以在这一刻我必须创建三个不同的可绘制文件并分别为每个文件设置颜色。正如我在上面的文件中所做的那样。我尝试过在原始视图上使用,但它不起作用。

  • 我正在尝试设置的背景色。我正在尝试使用以下代码添加 (部分来自 SwiftUI 教程)。然而,它只会是白色的,除非我用替换 我可以设置单个列表项的颜色,但我希望整个背景显示蓝色

  • 问题内容: 我想更改主视图(而不是按钮或文本视图)的背景颜色,而只是通常是黑色的真实背景…我得到了以下代码: 它在的内部,但只是更改了Button的背景。 问题答案: 尝试用类似的方法创建一个方法… 然后从您的OnClickListener调用它,并传递您想要的任何颜色。

  • 问题内容: 我已经将JOptionPane添加到我的应用程序中,但是我不知道如何将背景颜色更改为白色? 问题答案: 通过使用类 要么

  • 问题内容: 我试图在Storyboard检查器中将背景从透明更改为白色,但是在模拟时,堆栈视图的背景颜色仍然具有清晰的颜色。 如何更改的背景颜色? 问题答案: 您不能执行此操作– 是非绘图视图,这意味着从不调用该视图, 并且其背景颜色将被忽略。如果您非常需要背景颜色,请考虑将堆栈视图放置在另一个视图中,并为该视图提供背景颜色。 参考从这里。 编辑: 您可以在此处或下面的答案中(如下)将subVie

  • 我正在使用浮动操作按钮,我想更改背景颜色。 这是我的密码 下面是我用来尝试实现这一点的代码: 我也得到我的FAB的角落,如图所示。我应该如何消除那些角落的阴影?