You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中如何消除标题与列表项之间的空白间隙?

解决SwiftUI标题与列表项间的空白间隙问题

情况1:NavigationStack/iOS 16+或NavigationView场景

若标题使用navigationTitle,下方List的默认顶部间隙可通过以下方式消除:

  • 隐藏滚动背景并调整边距:
NavigationStack {
    List {
        Text("列表项1")
        Text("列表项2")
    }
    .navigationTitle("我的标题")
    .scrollContentBackground(.hidden)
    .padding(.top, -16) // 按需调整负值抵消默认间隙
}
  • 配合PlainListStyle消除Section头部间距(iOS 15+):
NavigationStack {
    List {
        Section {
            Text("列表项1")
            Text("列表项2")
        }
        .sectionHeaderTopPadding(.zero)
    }
    .listStyle(PlainListStyle())
    .navigationTitle("我的标题")
}

情况2:自定义标题+List场景

如果是自主实现的标题文本与List组合,间隙通常来自List默认顶部内边距,可直接调整内边距:

VStack(spacing: 0) {
    Text("自定义标题")
        .font(.title)
        .padding(.horizontal)
    
    List {
        Text("列表项1")
        Text("列表项2")
    }
    .contentInsets(.init(top: -20, leading: 0, bottom: 0, trailing: 0))
}

全局修改(不推荐,影响所有List)

若需全局统一消除List顶部间隙,可在App初始化时配置UITableView外观:

@main
struct MyApp: App {
    init() {
        UITableView.appearance().contentInset.top = -32
        UITableView.appearance().sectionHeaderTopPadding = 0
    }
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

注意:不同iOS版本的SwiftUI List默认样式存在差异,优先使用SwiftUI原生修饰符,避免全局修改影响其他页面布局。

内容的提问来源于stack exchange,提问作者Yaqrut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 00:04:49