Как обеспечить плавную анимацию одного и того же представления в разных стеках при использовании события фокуса текстовоIOS

Программируем под IOS
Ответить
Anonymous
 Как обеспечить плавную анимацию одного и того же представления в разных стеках при использовании события фокуса текстово

Сообщение Anonymous »

Я использовал matchedGeometryEffect, чтобы «связать» размер и положение двух представлений вместе.
Но я попытался использовать Textfield и изменил время запуска анимации для фокусировки. Когда клавиатура появляется, анимация выполняется неравномерно.
Как сделать так, чтобы элементы в представлении скользили плавно? (позиция 1 плавно переходит в позицию 2)

Код: Выделить всё

struct ContentView: View {
@State private var text = ""
@Namespace var ns
@FocusState private var isFocused: Bool

var body: some View {
ZStack {
Color.clear
.contentShape(Rectangle())
.onTapGesture {
isFocused = false
}
VStack {
HStack {
TextField("placeholder", text: $text, axis: .vertical)
.focused($isFocused)
.frame(minHeight: 28)
.background(Color.red)
if !isFocused {
Text("xxxxxx") // position1
.background(Color.blue)
.matchedGeometryEffect(id: "xxxxxx", in: ns)
}
}
if isFocused {
HStack {
Spacer()
Text("xxxxxx") // position2
.background(Color.blue)
.matchedGeometryEffect(id: "xxxxxx", in: ns)
}
}
}
.background(Color.yellow)
.animation(.easeInOut(duration: 1), value: isFocused)
}
.padding()
}
}
Изображение


Подробнее здесь: https://stackoverflow.com/questions/793 ... en-using-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»