How to change the padding above and below a SwiftUI Divider?

87 阅读1分钟

例如如下的代码,我们构造了一个列表,并在每个Item下面添加一个Divider()的视图:

ScrollView {
    LazyVStack {
        ForEach(feeds, id: .id) { feed in
            VStack {
                Text(feed.title)
                Divider()
            }
        }
    }
}

如上图代码所示,divider上下都会有大概10dp左右的间距。

但是其实这个间距并不是Divider()所产生的,而是由VStack所生成的,VStack会默认给子view添加一个默认的spacing,因此,我们只需要这样,即将spacing设置为0,就可以取消上下的间距:

ScrollView {
    LazyVStack(spacing: 0) {
        ForEach(0..<10) { id in
            VStack(alignment: .leading, spacing: 0) {
                Text("id: (id)")
                Divider()
            }
            .padding(.leading, 16)
        }
    }
}