Прежде всего вам нужно создать переход. Вы можете создать расширение для AnyTransition
или просто создать переменную. Используйте модификатор move()
, чтобы указать переходу, чтобы переместить вид от определенного края
let transition = AnyTransition.move(edge: .top);
Это само по себе работает, только если вид находится на краю экрана. Если ваш взгляд больше к центру, вы можете использовать модификатор combined()
, чтобы объединить другой переход, такой как offset()
, чтобы добавить дополнительное смещение
let transition = AnyTransition
.move(edge: .top)
.combined(with:
.offset(
.init(width: 0, height: 100)
)
);
Этот переход будет как для показа, так и для удаления вида, хотя вы можете использовать AnyTransition.asymmetric()
, чтобы использовать разные переходы для показа и удаления вида
Затем создайте showButton
bool (назовите его как угодно), который будет обрабатывать показ кнопки. При этом будет использоваться оболочка свойства @State
, поэтому SwiftUI обновит пользовательский интерфейс при изменении.
@State var showButton: Bool = false;
Затем вам нужно добавить переход к вашей кнопке и заключить ее в оператор if
, проверяя, является ли showButton
bool равным true
if (self.showButton == true) {
Button(action: { }) {
Text("Button")
}
.transition(transition);
}
Наконец, вы можете обновить showButton
bool до true
или false
в блоке анимации, чтобы анимировать переход кнопки. toggle()
просто меняет состояние bool
withAnimation {
self.showButton.toggle();
}
Вы можете ввести свой код в onAppear()
и установить bool на true
, чтобы кнопка отображалась при появлении вида. Вы можете позвонить onAppear()
на большинство вещей, таких как VStack
.onAppear {
withAnimation {
self.showButton = true;
}
}
Проверьте документы Apple, чтобы увидеть, что доступно для AnyTransition
https://developer.apple.com/documentation/swiftui/anytransition