我有一个确认对话框,其中一个条目有点太长,无法在一行中显示,因此它被从中间切掉:
我尝试过的任何方法都不起作用,我在这里有点没有想法。
尽管有一件值得注意的事情是它是可能以某种方式实现:如果我显示对话框,然后增加文本大小(从辅助功能选项),那么在某些时候它会绕多行!此时,如果我保持对话框打开并返回到较小的文本大小,它甚至会保留在多行上,这是我最初想要的结果。当然,如果我关闭并重新打开对话框,它会恢复为单行并进行剪切以适合
尝试使用
.frame(height:
设置高度,也使用.fixedSize(
,但没有用
这是一个可以重现的小片段
import SwiftUI
struct ConfirmationDialogTest: View {
@State private var showDialog = false
var body: some View {
VStack {
Button("Show dialog") {
showDialog = true
}
}
.confirmationDialog("Confirmation", isPresented: $showDialog) {
Button("OK") {}
Button("Very long text that will eventually be too long to be displayed on only one single line") {}
Button("Delete", role: .destructive) {}
}
}
}
正如我在上面的评论中所表达的,我可以使用手动换行符有多行。以下是我的实现。
import SwiftUI
struct ConfirmView: View {
@State private var showConfirmation = false
@State private var foregroundColor = Color.black
var body: some View {
Button {
showConfirmation = true
} label: {
Label("Do you want to tap me?", systemImage: "book.fill")
.font(.title2)
.foregroundColor(foregroundColor)
}
.buttonStyle(.bordered)
.confirmationDialog("May I help you? \nBy the way, we will be closed at 8 PM. \nIf you need help, please let us know. \nOne more thing... Another store of ours is open\nuntil 10 PM. So please go there if we are closed.", isPresented: $showConfirmation, titleVisibility: .visible, actions: {
Button("Green") {
foregroundColor = .green
}
Button("White") {
foregroundColor = .white
}
Button("Yellow") {
foregroundColor = .yellow
}
Button("Black") {
foregroundColor = .black
}
})
}
}
以下是代码实现截图。没什么特别的。