SwiftUI 文本剪辑调整大小

Mic*_*urn 12 animation text clipping swiftui

在以下示例中,点击“展开”按钮会导致文本“39”在调整大小过渡到“40”时进行剪辑。这种用途的真实上下文是一个文本标签,它反映了动画图中选择器的值。我希望文本只占用它所需的空间,但在值之间动画时不会剪切。

禁用标签的动画不是一个选项,因为标签在我的图表中的位置也会有动画。

再生产:

import SwiftUI

struct TextClipping: View {
    enum ExpansionState {
        case expanded
        case contracted

        mutating func toggle() {
            switch self {
            case .expanded:
                self = .contracted
            case .contracted:
                self = .expanded
            }
        }
    }

    @State var expansion: ExpansionState = .contracted

    var text: String {
        switch expansion {
        case .expanded:
            return "40"
        case .contracted:
            return "39"
        }
    }

    var body: some View {
        VStack(spacing: 16) {
            Text(text)
                .font(.system(.title, design: .rounded))
                .fontWeight(.bold)
                .foregroundColor(.black)

            Button(self.expansion == .contracted ? "Expand" : "Contract") {
                withAnimation {
                    self.expansion.toggle()
                }
            }
        }
    }
}

struct TextClipping_Previews: PreviewProvider {
    static var previews: some View {
        TextClipping()
    }
}
Run Code Online (Sandbox Code Playgroud)

关于如何让标签的文本流畅地改变而不被剪裁,有什么想法吗?

Mic*_*urn 1

通过申请解决

.minimumScaleFactor(0.1)
Run Code Online (Sandbox Code Playgroud)

到正文。