Вопрос прост: как в мире заставить Text
правильно анимировать?
struct ContentView: View {
@State var foozle: String = ""
var body: some View {
VStack() {
Spacer()
Text(self.foozle)
.frame(maxWidth: .infinity)
.transition(.opacity)
Button(action: {
withAnimation(.easeInOut(duration: 2)) {
self.foozle = "uuuuuuuuu"
}
}) { Text("ugh") }
Spacer()
}.frame(width: 320, height: 240)
}
}
Проблема: представление настаивает на выполнении какой-то тупой анимации, когда текст заменяется новым текст, но усеченный с эллипсами, и он медленно расширяется по ширине, пока не отобразится весь новый текст.
Естественно, это , а не анимация непрозрачности. Это не проблема ширины кадра, как я проверял при рисовании границ.
Это просто еще одна глупая ошибка в SwiftUI, с которой мне придется иметь дело, и молюсь, чтобы кто-то это исправил?
РЕДАКТИРОВАТЬ: хорошо, так что благодаря @ Mac3n, я получил это вдохновение, которое работает правильно, даже если это немного некрасиво:
Text(self.foozle)
.frame(maxWidth: .infinity)
.opacity(op)
Button(action: {
withAnimation(.easeOut(duration: 0.3)) {
self.op = 0
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
self.foozle += "omo"
withAnimation(.easeIn(duration: 0.3)) {
self.op = 1
}
}
}
}) {
Text("ugh")
}