【发布时间】:2020-02-16 22:59:36
【问题描述】:
在以下示例中,点击“展开”按钮会导致文本“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()
}
}
有什么想法可以让标签的文本流畅地变化而不被剪裁吗?
【问题讨论】:
-
无法在 Xcode 13 / iOS 15 中重现。您能否附上 gif 与问题的演示或提供更可见重现的代码?
标签: animation text swiftui clipping