Анимируйте представление, чтобы оно скользило вверх и скрывалось при нажатии в SwiftUIIOS

Программируем под IOS
Ответить
Anonymous
 Анимируйте представление, чтобы оно скользило вверх и скрывалось при нажатии в SwiftUI

Сообщение Anonymous »

Я создал модификатор баннера, который отображает баннер сверху. Это хорошо анимирует. Однако, когда я нажимаю, чтобы закрыть его, он вообще не анимируется, а просто скрывается, хотя действие жеста касания обертывает его withAnimation.

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

struct BannerModifier: ViewModifier {
@Binding var model: BannerData?

func body(content: Content) -> some View {
content.overlay(
Group {
if model != nil {
VStack {
HStack(alignment: .firstTextBaseline) {
Image(systemName: "exclamationmark.triangle.fill")
VStack(alignment: .leading) {
Text(model?.title ?? "")
.font(.headline)
if let message = model?.message {
Text(message)
.font(.footnote)
}
}
}
.padding()
.frame(minWidth: 0, maxWidth: .infinity)
.foregroundColor(.white)
.background(.red)
.cornerRadius(10)
.shadow(radius: 10)
Spacer()
}
.padding()
.animation(.easeInOut)
.transition(AnyTransition.move(edge: .top).combined(with: .opacity))
.onTapGesture {
withAnimation {
model = nil
}
}
.gesture(
DragGesture()
.onChanged { _ in
withAnimation {
model = nil
}
}
)
}
}
)
}
}

struct BannerData: Identifiable {
let id = UUID()
let title: String
let message: String?
}
Изображение

При касании я стираю модель, но она не анимируется. Только сразу скрывается. Как я могу анимировать его, чтобы он скользил вверх, что противоположно тому, как он скользит вниз при отображении? Было бы очень здорово, если бы я мог сделать жест перетаскивания интерактивным, чтобы можно было перемещать его, как собственные уведомления.

Подробнее здесь: https://stackoverflow.com/questions/658 ... in-swiftui
Ответить

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

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

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

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

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