我正在尝试在SwiftUI中更改ActionSheet的文本颜色和背景颜色。
这是我的actionSheet的代码:
.actionSheet(isPresented: $viewModel.isCustomItemSelected) {
ActionSheet(
title: Text("Add Item"),
message: Text("Wich item would you like to add?"),
buttons: [
.default(Text("Todo")),
.default(Text("Event")),
.cancel(Text("Cancel"))
])
}
不管我尝试什么,例如色调颜色,前景色等。它都不会改变颜色。
如何更改它的正确方法?
我想SwiftUi没有任何API可以对其进行样式设置,但是我相信这应该是任何解决方法。
最佳答案
部分解决方案
为ActionSheet创建一个自定义配置器:
import SwiftUI
struct ActionSheetConfigurator: UIViewControllerRepresentable {
var configure: (UIAlertController) -> Void = { _ in }
func makeUIViewController(context: UIViewControllerRepresentableContext<ActionSheetConfigurator>) -> UIViewController {
UIViewController()
}
func updateUIViewController(
_ uiViewController: UIViewController,
context: UIViewControllerRepresentableContext<ActionSheetConfigurator>) {
if let actionSheet = uiViewController.presentedViewController as? UIAlertController,
actionSheet.preferredStyle == .actionSheet {
self.configure(actionSheet)
}
}
}
struct ActionSheetCustom: ViewModifier {
func body(content: Content) -> some View {
content
.background(ActionSheetConfigurator { action in
// change the text color
action.view.tintColor = UIColor.black
})
}
}
比视图中,在 .actionSheet 修饰符之后,添加自定义修饰符,如下所示:.actionSheet(isPresented: $viewModel.isCustomItemSelected) {
ActionSheet(
title: Text("Add Item"),
message: Text("Wich item would you like to add?"),
buttons: [
.default(Text("Todo")),
.default(Text("Event")),
.cancel(Text("Cancel"))
])
}
.modifier(ActionSheetCustom())
我没有弄清楚如何更改背景颜色或如何进行主要自定义。我确定我们应该在要更改颜色的操作对象上工作。关于ios - iOS SwiftUI:ActionSheet自定义样式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58728616/