swift - SwiftUI:如何更改警报按钮和 NavigationLink 后退按钮的颜色?
问题描述
如何更改警报中按钮的颜色和 NavigationLink 中的后退按钮?在警报按钮的文本之后设置.accentColor(.init("someColor"))
不起作用。在 navigationLink 之后设置.accentColor(.init("someColor"))
也不起作用。我能做些什么?
struct ContentView: View {
@State var showSheet = false
@State var alertShouldBeShown = !UserDefaults.standard.bool(forKey: "£Start")
var body: some View {
Button(action: {
self.showSheet.toggle()
}) {
Text("click me")
//.accentColor(colorScheme == .dark ? Image("") : Image("Info-Icon"))
}.sheet(isPresented: $showSheet) {
SheetView(showSheet: self.$showSheet)
}
.alert(isPresented: $alertShouldBeShown, content: {
Alert(title: Text("Headline"),
message: Text("Text"),
dismissButton: Alert.Button.default(
Text("Ok"), action: {
UserDefaults.standard.set(true, forKey: "Start")
}
)
)
})
}
}
struct SheetView: View {
@Binding var showSheet: Bool
var body: some View {
NavigationView {
DetailView()
.navigationBarTitle(Text("Headline"), displayMode: .inline)
.navigationBarItems(trailing: Button(action: {
self.showSheet = false
}) {
Text("Done")
.bold()
})
}.navigationViewStyle(StackNavigationViewStyle())
}
}
struct DetailView: View {
var body: some View {
List {
HStack {
NavigationLink(destination: DetailViewOne()) {
Text("View 1")
}
}
HStack {
NavigationLink(destination: DetailViewTwo()) {
Text("View 2")
}
}
}
}
}
struct DetailViewOne: View {
var body: some View {
Text("1")
}
}
struct DetailViewTwo: View {
var body: some View {
Text("2")
}
}
解决方案
您可以通过使用更改 NavigationBar 强调色,accentColor
但您需要将其应用于SheetView
(给定环境的根视图):
SheetView(showSheet: self.$showSheet)
.accentColor(.red)
不幸的是,到目前为止,SwiftUI 还不允许进行太多Alert
自定义。
但是,由于Alert
它构建在 UIKit 组件 ( ) 之上,这UIAlertController
也意味着您可以更改包含在.UIView
UIAlertController
您可以将此代码放在您的@main App init 或 SceneDelegate 中:
UIView.appearance(whenContainedInInstancesOf: [UIAlertController.self]).tintColor = .red
推荐阅读
- mysql - 结合这两个查询的最佳方法是什么
- angular - 使用量角器茉莉框架无法访问 Web 驱动程序错误 Chrome
- c# - 在 linux box 中托管 .net API
- reactjs - 域转移后的服务工作者缓存
- javascript - 如果 saveToGallery 为 false,则带有 MLKit 的 NativeScript 核心 CameraPlus 不起作用
- python - 如何在 IDLE 中显示呼叫提示?
- javascript - Angular 1.x 中的深度链接和路由
- python - Python - Http 服务器,如何发送 .ico 文件?
- java - 有没有办法在没有 getter 或 setter 的情况下制作推土机地图字段?(或者,什么映射器可以做到这一点?)
- c++ - 在 C++ 中,setter、getter 和构造函数有什么区别?