TabView显示工具栏,即使我将其标记为隐藏,设置页面样式也会导致剪裁

TabView is showing toolbar, even though I have it marked hidden, setting page style causes clipping

提问人:xTwisteDx 提问时间:11/6/2023 更新时间:11/6/2023 访问量:46

问:

我有一个包含一个自定义的自定义,它只是一个包含多个对象的自定义。整个内容都包含在一个 中,对于每个页面,都会有一个新视图添加到我的 .TabViewPageViewScrollViewScrollViewsome ViewNavigationStackTabView

 NavigationStack {
        TabView(selection: $selectedPageIndex) {
            ForEach(appConfig.pages.indices, id: \.self) { index in
                let page = appConfig.pages[index]
                PageView(topPadding: $navBarHeight,
                         bottomPadding: $tabBarHeight,
                         page: page)
                .toolbar(.hidden, for: .tabBar)
                .tag(index)
            }
        }
        .overlay {
            VStack {
                navBar
                    .getHeight(height: $navBarHeight)
                
                Spacer()
                
                TabBar(selectedPageIndex: $selectedPageIndex)
                    .getHeight(height: $tabBarHeight)
            }
        }

我有这种奇怪的行为,如果我改变几次,就会重新出现。这发生在画布、模拟器或真实设备上。如图所示。selectedPageIndex.toolbar

Toolbar is hidden, but it still reappears.

我遇到的第二个问题是,我需要它是“全屏”的,因为我使用它来托管我的页面,并且实际上创建了一个自定义和它自己的项目。每当我尝试添加并更改“有时”时,都会起作用,但大多数情况下只是不做任何事情。TabViewNavigationBarTabBar.ignoresSafeArea().tabViewStyle(.page(indexDisplayMode: .never))selectedPageIndex

.ignoresSafeArea()
.tabViewStyle(.page(indexDisplayMode: .never))
.overlay {

取而代之的是,基础视图以一种意想不到的方式被剪裁,而不是扩展视图的整个高度。它也存在于画布、模拟器和真实设备中。

Notice that the view is not extending fully, to the bottom of the screen.

奇怪的是,每当我第一次加载它时,一切都会按照您的预期呈现,底部没有被剪裁。我可以使用拖动手势来交换选项卡,甚至可以使用 TabBar 选择新选项卡,但是视图会立即跳起并开始剪裁,就好像框架自行更改一样。为了修复它,我必须重置视图。

iOS SwiftUI 视图 状态

评论

0赞 Benzy Neez 11/6/2023
这个问题的答案可能会有所帮助:SwiftUI TabView 在视图下方添加了奇怪的空白区域?具体而言,请参阅上一段中对替代方法的描述。
0赞 Timmy 11/6/2023
您可以使用 隐藏标签栏。UITabBar.appearance().alpha = 0
0赞 Kushagra 11/6/2023
您是否尝试过在PageView上进行设置?ignoresSafeArea()
0赞 xTwisteDx 11/6/2023
我已经尝试了所有这些事情。我认为导致它的原因与 之间存在一些冲突。我设法让它以某种身份工作,但仍然是一个 WIP。如果我找到一个解决方案,我会在这里重新发布一个解决方案。NavigationStackTabView
0赞 lorem ipsum 11/7/2023
TabView 不应位于 NavigationStack 内部,每个选项卡必须互斥。为每个选项卡提供自己的 NavigationStack

答: 暂无答案