如何在 SwiftUI 中为文本保留 space
How to reserve space for Text in SwiftUI
我有一个 sheet
显示上传文件的进度。它看起来像这样:
如您所见,更改的行(“3.4 MB of 13.9...”)被截断了。这是因为它以一个宽度开始,但随后可以在字符串中以不同的数字增长。
我尝试了以下方法,作为为可能的最大字符串保留 space 的技巧。它可以工作,但并不理想,因为白色 Rectangle
在深色模式下无法工作。
VStack(spacing: 0) {
Text("Uploading").bold()
Spacer().frame(height: 3)
Text("\(currentFilename)")
Text("\(completedFiles) of \(totalFiles) files")
ZStack {
Text("12345 KB of 12345 KB") // Biggest possible string
Rectangle().fill(Color.white) // But how to hide it ?
Text("\(bytes) of \(totalBytes)")
}
ProgressView(value: fraction)
Button("Cancel") { ... }
}.padding()
我没有看到 Color.systemBackgroundColor
或类似的东西来替代 Color.white
。
有谁知道像这样为文本保留 space 的好技巧吗?是我的 ZStack
想法还是其他?
如果对你使用有帮助Color.clear
ZStack {
Text("12345 KB of 12345 KB") // Biggest possible string
.foregroundColor(Color.clear) // << here !!
Text("\(bytes) of \(totBytes)")
}
你可以试试fixedSize
:
Text("\(bytes) of \(totalBytes)")
.fixedSize()
那么你就不需要像 Text("12345 KB of 12345 KB")
这样的技巧了
如果你想保持宽度不变,你可以这样做:
Text("12345 KB of 12345 KB")
.opacity(0)
我有一个 sheet
显示上传文件的进度。它看起来像这样:
如您所见,更改的行(“3.4 MB of 13.9...”)被截断了。这是因为它以一个宽度开始,但随后可以在字符串中以不同的数字增长。
我尝试了以下方法,作为为可能的最大字符串保留 space 的技巧。它可以工作,但并不理想,因为白色 Rectangle
在深色模式下无法工作。
VStack(spacing: 0) {
Text("Uploading").bold()
Spacer().frame(height: 3)
Text("\(currentFilename)")
Text("\(completedFiles) of \(totalFiles) files")
ZStack {
Text("12345 KB of 12345 KB") // Biggest possible string
Rectangle().fill(Color.white) // But how to hide it ?
Text("\(bytes) of \(totalBytes)")
}
ProgressView(value: fraction)
Button("Cancel") { ... }
}.padding()
我没有看到 Color.systemBackgroundColor
或类似的东西来替代 Color.white
。
有谁知道像这样为文本保留 space 的好技巧吗?是我的 ZStack
想法还是其他?
如果对你使用有帮助Color.clear
ZStack {
Text("12345 KB of 12345 KB") // Biggest possible string
.foregroundColor(Color.clear) // << here !!
Text("\(bytes) of \(totBytes)")
}
你可以试试fixedSize
:
Text("\(bytes) of \(totalBytes)")
.fixedSize()
那么你就不需要像 Text("12345 KB of 12345 KB")
如果你想保持宽度不变,你可以这样做:
Text("12345 KB of 12345 KB")
.opacity(0)