Показывать черный слой, как лист или AlertView, поверх всего содержимого ⇐ IOS
-
Гость
Показывать черный слой, как лист или AlertView, поверх всего содержимого
У меня есть Hstack, содержащий SideBar() и Group, которая отображает содержимое на основе выбора SideBar.
р>
struct Main: View { @State Private var currentScreen: AppScreen? = .analisys var body: some View { HStack(интервал: 0) { Боковая панель() Группа { если пусть currentScreen { currentScreen.content } } } @ViewBuilder частная функция SideBar() -> некоторый вид { // Меню боковой панели } } Контент управляется с помощью перечисления AppScreen
импортировать SwiftUI enum AppScreen: CaseIterable, Identifying { анализ дел, тенденции идентификатор переменной: AppScreen {self} @ViewBuilder содержимое var: некоторые View { переключить себя { case .analisys: ContentUnavailableView(name + «Недоступно», systemImage: значок) случай .trends: TrendsView() } } } Внутри содержимого под названием TrendView есть кнопка, которая должна отображать черный слой, который я использую в качестве фона представления настраиваемого представления, как это делает, например, alertView. . (черный слой и элемент alertView над ним).
Теперь моя проблема в том, что если я вызову пользовательское представление внутри TrendView() с помощью .overlay { , SideBar не будет скрыт по черному слою. Как я могу воссоздать эффект черного слоя и перекрывающегося представления, как это делает alertView в моем случае?
struct TrendView: Просмотр { @State Private var showBlackLayer: Bool = false var body: some View { ZStack { Button("Показать слой и вид") { showBlackLayer.toggle() } .оверлей { Черный цвет .opacity(showBlackLayer? 0,5: 0) .edgesIgnoringSafeArea(.all) .onTapGesture { showBlackLayer = false // Chiudi la vista Nera } } } .buttonStyle(.без границ) } }
У меня есть Hstack, содержащий SideBar() и Group, которая отображает содержимое на основе выбора SideBar.
р>
struct Main: View { @State Private var currentScreen: AppScreen? = .analisys var body: some View { HStack(интервал: 0) { Боковая панель() Группа { если пусть currentScreen { currentScreen.content } } } @ViewBuilder частная функция SideBar() -> некоторый вид { // Меню боковой панели } } Контент управляется с помощью перечисления AppScreen
импортировать SwiftUI enum AppScreen: CaseIterable, Identifying { анализ дел, тенденции идентификатор переменной: AppScreen {self} @ViewBuilder содержимое var: некоторые View { переключить себя { case .analisys: ContentUnavailableView(name + «Недоступно», systemImage: значок) случай .trends: TrendsView() } } } Внутри содержимого под названием TrendView есть кнопка, которая должна отображать черный слой, который я использую в качестве фона представления настраиваемого представления, как это делает, например, alertView. . (черный слой и элемент alertView над ним).
Теперь моя проблема в том, что если я вызову пользовательское представление внутри TrendView() с помощью .overlay { , SideBar не будет скрыт по черному слою. Как я могу воссоздать эффект черного слоя и перекрывающегося представления, как это делает alertView в моем случае?
struct TrendView: Просмотр { @State Private var showBlackLayer: Bool = false var body: some View { ZStack { Button("Показать слой и вид") { showBlackLayer.toggle() } .оверлей { Черный цвет .opacity(showBlackLayer? 0,5: 0) .edgesIgnoringSafeArea(.all) .onTapGesture { showBlackLayer = false // Chiudi la vista Nera } } } .buttonStyle(.без границ) } }
Мобильная версия