首页 > 解决方案 > SwiftUI 文本不使用 .fixedSize() 缩小

问题描述

我正在开发一个应用程序,其中包含一段带有按钮的大文本,我希望在其下方占据与文本相同的宽度。我的解决方案是将 aVStack.fixedSize()修饰符一起使用:

VStack {
    Text(viewModel.timeString)
        .animation(nil)
        .minimumScaleFactor(0.1)
        .lineLimit(1)
        .font(.system(size: 100, design: .monospaced))
        .padding(.vertical, -20)
    TimerActionsCompact(viewModel: viewModel) // the 3 buttons
}
.fixedSize()

这产生了我想要的结果:

在此处输入图像描述

然而,当文本变得太大时,它只是离开屏幕而不是缩小,即使我已经minimumScaleFactor设置lineLimit了。

我发现问题是.fixedSize(),删除它会导致文本正确缩小。

我做错了什么,还是这可能是 swiftUI 的错误?如果是这样,有什么解决方法吗?

谢谢!

标签: swifttextswiftui

解决方案


一种可以使用框架修饰符的可能方式,如下例所示:

struct ContentView: View {
    
    @State private var string: String = "0.0"
    
    var body: some View {
        
        Text(string)
            .font(.system(size: 100, design: .monospaced))
            .minimumScaleFactor(0.1)
            .lineLimit(1)
            .frame(width: 200, height: 80) // give your custom size here as you like!
            .background(Color.gray.cornerRadius(10.0))
            .animation(nil, value: string)
        
        Button("add") { string += String(describing: Int8.random(in: 0...9)) }.padding()
        
    }
    
}

在此处输入图像描述


推荐阅读