Пользовательская фоновая анимация всплывающего окна SwiftUIIOS

Программируем под IOS
Ответить
Anonymous
 Пользовательская фоновая анимация всплывающего окна SwiftUI

Сообщение Anonymous »

Как предотвратить потемнение фона кнопки после закрытия всплывающего окна? На прикрепленном GIF-изображении показано, что кнопка становится темнее, прежде чем она снова становится стеклянной.
Изображение

Вот код для кнопки и всплывающего окна:
struct CustomMenuView: View {

@ViewBuilder var label: Label
@ViewBuilder var content: Content
@State private var isExpanded: Bool = false

@Namespace private var namespace

var body: some View {
Button {
isExpanded.toggle()
} label: {
label.matchedTransitionSource(id: "MENUCONTENT", in: namespace)
}
.popover(isPresented: $isExpanded) {
content
.navigationTransition(.zoom(sourceID: "MENUCONTENT", in: namespace)).presentationCompactAdaptation(.popover)
}
}
}

И вот где я использую кнопку:
struct SelectorMenu: View {

@Binding var selectedLeague: League

private let leagues: [League] = [.nfl, .mlb, .nba]

var body: some View {
CustomMenuView() {
buttonLabel
} content: {
menuView
}
}

@ViewBuilder
private var buttonLabel: some View {
Text("Button")
}

@ViewBuilder
private var menuView: some View {
VStack {
Text("MENU ITEM 1")
Divider()
Text("MENU ITEM 2")
Divider()
Text("MENU ITEM 3")
Divider()
Text("MENU ITEM 4")
Divider()
Text("MENU ITEM 5")
}
.padding()
}
}

Я попробовал изменить цвет фона всплывающего окна следующим образом:
struct CustomMenuView: View {

@ViewBuilder var label: Label
@ViewBuilder var content: Content
@State private var isExpanded: Bool = false

@Namespace private var namespace

var body: some View {
Button {
isExpanded.toggle()
} label: {
label.matchedTransitionSource(id: "MENUCONTENT", in: namespace)
}
.popover(isPresented: $isExpanded) {
content
.navigationTransition(.zoom(sourceID: "MENUCONTENT", in: namespace)).presentationCompactAdaptation(.popover)
.background(.red)
}
}
}

Это меняет цвет фона всплывающего окна после его полного раскрытия, но анимация закрытия по-прежнему использует более темный материал, как показано в видео выше.
Я также пытался сделать фон презентации прозрачным, но это ничего не дало:
struct CustomMenuView: View {

@ViewBuilder var label: Label
@ViewBuilder var content: Content
@State private var isExpanded: Bool = false

@Namespace private var namespace

var body: some View {
Button {
isExpanded.toggle()
} label: {
label.matchedTransitionSource(id: "MENUCONTENT", in: namespace)
}
.popover(isPresented: $isExpanded) {
content
.navigationTransition(.zoom(sourceID: "MENUCONTENT", in: namespace)).presentationCompactAdaptation(.popover)
.presentationBackground(.clear)
}
}
}


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

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

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

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

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

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