小编Eri*_*ric的帖子

如何使用 iOS16 删除 SwiftUI Plain List 中的节标题顶部填充

当我们使用 SwiftUI List 组件并需要一个节标题时,顶部填充将出现在每个节的标题上。

iOS15下,我们用它UITableView.appearance().sectionHeaderTopPadding = 0来解决这个问题。查看附件iOS15&Xcode14构建截图。

但在iOS16中,这个设置似乎不起作用。查看附件iOS16&Xcode14构建截图,滚动时:iOS16&Xcode14构建滚动

所以,我的问题是如何在iOS16中删除节标题顶部填充,并且当滚动列表时,其节标题将被固定,就像附件iOS15&Xcode14构建滚动一样。

从iOS16开始,SwiftUI List组件似乎使用UICollectionView而不是UITableView,所以我尝试通过全局设置UICollectionView的section top padding来解决这个问题。不幸的是,我没有找到设置 UICollectionView 的部分顶部填充的方法。

我的代码如下。

//
//  ContentView.swift
//  ListIniOS16
//
//  Created by Eric on 2022/07/23.
//

import SwiftUI

struct ContentView: View {
    @State private var collections: [ListData] = ListData.collection

    init() {
        let appBarTheme = UINavigationBarAppearance()
        appBarTheme.configureWithOpaqueBackground()
        appBarTheme.backgroundColor = UIColor(.gray)
        UINavigationBar.appearance().standardAppearance = appBarTheme
        UINavigationBar.appearance().scrollEdgeAppearance = appBarTheme
        if #available(iOS 15.0, *) {
            // can fix sectionHeaderTopPadding issue in iOS15, …
Run Code Online (Sandbox Code Playgroud)

swiftui swiftui-list ios16 xcode14

21
推荐指数
1
解决办法
5467
查看次数

标签 统计

ios16 ×1

swiftui ×1

swiftui-list ×1

xcode14 ×1