iSh*_*mus 5 ios swift swiftui xcode11
我刚刚开始在零售版本中使用 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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试过将框架应用于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
Run Code Online (Sandbox Code Playgroud)
这是 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)
}
}
Run Code Online (Sandbox Code Playgroud)
我想这就是你要找的。.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)
}
}
Run Code Online (Sandbox Code Playgroud)