ios - SwiftUI 文本不会扩展到多行
问题描述
我刚刚开始在零售版本中使用 SwiftUI。我无法让我的文本视图之一自动扩展为多行。我已经阅读了许多关于 SO 和 HackingWithSwift 的帖子,但无法让它发挥作用。我想也许它可能与我的其他框架有关,但我不知道从哪里开始
struct Message: View {
var body: some View {
ZStack() {
Color.blue.cornerRadius(8)
VStack(alignment: .leading, spacing: 8) {
Text("Lorem Ipsum")
.foregroundColor(.white)
.bold()
.font(.system(size: 20))
Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Donec enim diam vulputate ut pharetra. Sed turpis tincidunt id aliquet risus feugiat in. Interdum velit laoreet id donec ultrices tincidunt arcu non. Lorem END")
.foregroundColor(.white)
.lineLimit(nil)
Text("Sent to Group1 by iShaymus")
.foregroundColor(.white)
.italic()
.opacity(0.5)
.font(.system(size: 12))
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .topLeading)
.padding(12)
}
}
}
我尝试将框架应用于Text()
. 我试过添加.font(.body)
. 我试过设置.lineLimit(100)
。他们都没有工作。输出始终如下:
整个身体字符串明显更长:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Donec enim diam vulputate ut pharetra. Sed turpis tincidunt id aliquet risus feugiat in. Interdum velit laoreet id donec ultrices tincidunt arcu non. Lorem END
感谢 Marc,这是工作代码
import SwiftUI
struct Message: View {
@State var title = ""
@State var messageBody = ""
@State var sentBy = ""
@State var targetSite = ""
var body: some View {
VStack(alignment: .leading, spacing: 8) {
Text(title)
.foregroundColor(.white)
.bold()
.font(.system(size: 20))
Text(messageBody)
.foregroundColor(.white)
.fixedSize(horizontal: false, vertical: true)
Text("Sent to \(targetSite) by \(sentBy)")
.foregroundColor(.white)
.italic()
.opacity(0.5)
.font(.system(size: 12))
}
.frame(minWidth: 0, maxWidth: .infinity, alignment: .topLeading)
.padding(12)
.background(Color.blue)
.cornerRadius(10)
}
}
解决方案
我想这就是你要找的。根据需要使用.fixedSize(horizontal: false, vertical: true)
。
struct Message: View {
var body: some View {
ZStack() {
Color.blue.cornerRadius(8)
VStack(alignment: .leading, spacing: 8) {
Text("Lorem Ipsum")
.foregroundColor(.white)
.bold()
.font(.system(size: 20))
Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Donec enim diam vulputate ut pharetra. Sed turpis tincidunt id aliquet risus feugiat in. Interdum velit laoreet id donec ultrices tincidunt arcu non. Lorem END")
.foregroundColor(.white)
.fixedSize(horizontal: false, vertical: true)
Text("Sent to Group1 by iShaymus")
.foregroundColor(.white)
.italic()
.opacity(0.5)
.font(.system(size: 12))
}
// .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .topLeading)
.padding(12)
}
.fixedSize(horizontal: false, vertical: true)
}
}
推荐阅读
- javascript - How do I replicate Gmail's "to" field where each item is an indivisible span?
- python - 如何在python中将另一个图像居中到零矩阵中?
- ios - 当用户选择要播放的新视频时关闭画中画视频
- rust - Rust - 无法运行复杂的终端命令
- linux - 从centOS7上的文本文件添加用户的脚本出现问题
- c# - 如何设置页面大小
- python - 为什么在 Visual Studio Code 上运行 Python 3 脚本时会出现 SyntaxError?
- javascript - 使用 JS 从提示中做出选择后出现图片
- ios - JSONDecoder.convertFromSnakeCase 在 iOS 13 中停止工作?
- c# - Any on enums inside Where in Entity Framework Core