#ios #swiftui #navigationview #tabview #zstack
#iOS #свифтуи #вид навигации #вид вкладок #zstack
Вопрос:
Мое приложение использует a TabView
, и в нем есть a NavigationView
, поэтому я могу переходить к различным представлениям на выбранных вкладках. Я использую .navigationTitle
вместе с .navigationBarTitleDisplayMode(.large)
, чтобы показать пользователям, где они находятся (в приведенном ниже примере установлен заголовок "Pfizer"
). Все работает нормально, как вы можете видеть ниже:
var body: some View { TabView(selection: $selectedTab) { NavigationView { ...
Однако, как только я помещаю a ZStack
вокруг TabView
(или использую .overlay
) все представления, включая заголовок навигации, перемещаются в безопасную область, даже если я .ignoresSafeArea
нигде не указал! Вот как это выглядит, когда я использую ZStack
его:
var body: some View { ZStack(alignment: .center) { TabView(selection: $selectedTab) { NavigationView { ...
Обратите внимание, что я намерен использовать ZStack для условного отображения представления поверх моего представления вкладок/навигации следующим образом:
@Binding var condition: Bool var body: some View { ZStack(alignment: .center) { TabView(selection: $selectedTab) { NavigationView { ... } } .blur(radius: condition ? 3 : 0) if condition { VStack { VStack(alignment: .center) { Text("Some text") .font(.title2).padding(.bottom) } .padding() .background(Color(.secondarySystemBackground)) } .padding(.horizontal, 40) } } }
Мне удалось методом проб и ошибок выяснить, что проблема возникает только в том случае, если я использую модификатор .blur
представления TabView
внутри ZStack
. Если я удалю модификатор .blur
представления, то проблема, которую я описал, не возникнет, и поэтому первоначальный комментарий Asperi имеет смысл.
Я не понимаю такого поведения и понятия не имею, почему использование .blur
портит безопасную зону. Кто-нибудь может объяснить мне это поведение, пожалуйста?
Комментарии:
1. Отлично работает с Xcode 13.1 / iOS 15.1
2. Я подтвердил, что использую Xcode 13.1 / iOS 15.1, но все равно у меня есть эта проблема, как описано выше.
3. Методом проб и ошибок я выяснил, что проблема, которую я наблюдал, возникает только тогда, когда я использую модификатор .blur view. Вот причина, по которой Аспери не смог воспроизвести проблему. И все же я этого не понимаю.