如何防止长词断字,例如调整字体大小以适应宽度?
要求: 外部灰框必须具有相同的固定大小。 应该是 2 行。
var body: some View {
VStack {
Spacer()
Image(systemName: "square")
.resizable()
.frame(width: 50, height: 50)
Spacer()
Text("Acknowledgement for the rest")
.allowsTightening(true)
.minimumScaleFactor(0.01)
.lineLimit(2)
.multilineTextAlignment(.center)
}
.padding()
.frame(width: 140, height: 150, alignment: .center)
.background(
ZStack {
RoundedRectangle(cornerRadius: 10)
.foregroundColor(Color(hex: "f9f9f9"))
}
)
}
答案 0 :(得分:1)
使用fixedSize 修饰符:
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Spacer()
Image(systemName: "square")
.resizable()
.frame(width: 50, height: 50)
Spacer()
Text("Acknowledgement for the rest")
.fixedSize() // <<: Here
.allowsTightening(true)
.minimumScaleFactor(0.01)
.lineLimit(nil)
.multilineTextAlignment(.center)
}
.padding()
.frame(height: 150)
.background(
ZStack {
RoundedRectangle(cornerRadius: 10)
.foregroundColor(Color.blue)
}
)
}
}
答案 1 :(得分:0)
正如你在评论中提到的
<块引用>输入的文本是动态的。可能很长或很短。一世 想要调整字体大小以适应。
struct ContentView: View {
@State var acknowledgementString = "acknowledgement for the rest"
let mainWidth : CGFloat = 350//140
var body: some View {
Text(acknowledgementString)
.font(.system(size: 100))
.minimumScaleFactor(0.01)
.lineLimit(1)
.frame(width: mainWidth,height: mainWidth,alignment: .center )
.background(Color.red)
.onTapGesture {
acknowledgementString += " extra"
}
}
}