SwiftUI:如何更改警报中按钮的颜色?

SwiftUI:如何更改警报中按钮的颜色?,swift,xcode,swiftui,Swift,Xcode,Swiftui,我是SwiftUI的新手,如果黑暗模式被激活,我会在警报中更改接受按钮的颜色。按钮在亮模式下的颜色应与在暗模式下的颜色不同 struct ContentView: View { @State var alertShouldBeShown = !UserDefaults.standard.bool(forKey: "FirstStart") var body: some View { VStack { Text("Hello

我是SwiftUI的新手,如果黑暗模式被激活,我会在警报中更改接受按钮的颜色。按钮在亮模式下的颜色应与在暗模式下的颜色不同

struct ContentView: View {
@State var alertShouldBeShown = !UserDefaults.standard.bool(forKey: "FirstStart")

var body: some View {
    VStack {
        
        Text("Hello World!")
        
        .alert(isPresented: $alertShouldBeShown, content: {

            Alert(title: Text("Disclaimer"),
                  message: Text("Placeholder"),
                  dismissButton: Alert.Button.default(
                    Text("Accept"), action: {
                        UserDefaults.standard.set(true, forKey: "FirstStart")
                  }
                )
            )
        })
    }
}

}

好的,您不能更改内置警报上的文字和颜色。您将创建自己的自定义警报

例如:

结构ContentView:View{ @状态私有变量showAlert=false var body:一些观点{ ZStack{ 按钮操作:{showAlert=true}{ 文本印刷机 } 如果显示警报{ 颜色:黑色 .不透明度0.1 CustomAlertisPresented:$showAlert,标题:免责声明,正文:占位符,按钮文字:接受 } } } } 结构CustomAlert:视图{ @环境\.colorScheme私有变量colorScheme @显示绑定变量:Bool 变量标题:字符串 变量bodyText:字符串 var buttonText:String var body:一些观点{ ZStack{ VStack{ 文本标题 大胆的 文本正文文本 按钮操作:{self.isPresented=false}{ 文本按钮文本 .ForeGroundColorScheme==.light?.blue:.green } } .填充20 出身背景 颜色:白色 .角半径10 } } }
抱歉,您无法更改内置警报上的文字和颜色。您将创建自己的自定义警报

例如:

结构ContentView:View{ @状态私有变量showAlert=false var body:一些观点{ ZStack{ 按钮操作:{showAlert=true}{ 文本印刷机 } 如果显示警报{ 颜色:黑色 .不透明度0.1 CustomAlertisPresented:$showAlert,标题:免责声明,正文:占位符,按钮文字:接受 } } } } 结构CustomAlert:视图{ @环境\.colorScheme私有变量colorScheme @显示绑定变量:Bool 变量标题:字符串 变量bodyText:字符串 var buttonText:String var body:一些观点{ ZStack{ VStack{ 文本标题 大胆的 文本正文文本 按钮操作:{self.isPresented=false}{ 文本按钮文本 .ForeGroundColorScheme==.light?.blue:.green } } .填充20 出身背景 颜色:白色 .角半径10 } } }
警报按钮的颜色基于应用程序的色调/强调色。这种颜色实际上可以是动态的黑暗和光明的模式。最简单的方法是在资源目录中定义颜色


在iOS 14 beta版中,您可以在资产目录中定义SwiftUI的强调色,而无需编写任何额外代码。若你们想在iOS13中实现这一点,你们可能应该阅读这篇文章。如果要使用资产目录中具有不同明暗模式外观的颜色,请使用UIColorName:API。

警报按钮的颜色基于应用程序的色调/强调色。这种颜色实际上可以是动态的黑暗和光明的模式。最简单的方法是在资源目录中定义颜色

在iOS 14 beta版中,您可以在资产目录中定义SwiftUI的强调色,而无需编写任何额外代码。若你们想在iOS13中实现这一点,你们可能应该阅读这篇文章。如果要使用资源目录中具有不同明暗模式外观的颜色,请使用UIColorName:API