SwiftUI:防止长词断词

时间:2021-03-24 06:52:01

标签: swift xcode swiftui

如何防止长词断字,例如调整字体大小以适应宽度?

要求: 外部灰框必须具有相同的固定大小。 应该是 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"))
        }
    )

}

enter image description here

2 个答案:

答案 0 :(得分:1)

使用fixedSize 修饰符


enter image description here


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)

正如你在评论中提到的

<块引用>

输入的文本是动态的。可能很长或很短。一世 想要调整字体大小以适应。

它会调整字体大小以适应宽度。enter image description here

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"
        }
   } 
  }