NavigationStack嵌套分页TabView忽略安全区后底部出现额外内边距问题
以下是复现问题的代码:
struct ContentView: View { var body: some View { NavigationStack() { TabView { Color(.green) } .navigationTitle("Hello") .tabViewStyle(.page) .ignoresSafeArea(edges: .bottom) } } }
问题现象
- 视图初始显示正常,但向上滑动交互后,屏幕底部会出现额外内边距
- 缓慢滑动时,顶部标题无法转换为内联样式,处于“冻结”状态,后续滑动操作也无法更新标题状态
调试分析
通过视图层级调试器确认,这是SwiftUI与UIKit互操作的兼容性问题:分页样式的TabView会回退到UIKit实现,视图层级中可见UIKit视图及UIHostingController。具体问题点:
- SwiftUIPagingCollectionView高度设置正确,但其子视图UIKitPagingCell带有额外内边距,导致底部留白异常
- 标题冻结状态下,UIKitNavigationBar下存在两个标题视图,引发显示冲突
环境:Xcode 15、iOS 17
问题截图




内容的提问来源于stack exchange,提问作者faircloud
相关产品推荐
相关产品推荐

