为啥我的 SwiftUI 列表分隔符没有正确排列?

Posted

技术标签:

【中文标题】为啥我的 SwiftUI 列表分隔符没有正确排列?【英文标题】:Why are my SwiftUI List Dividers not lining up properly?为什么我的 SwiftUI 列表分隔符没有正确排列? 【发布时间】:2020-12-27 17:59:20 【问题描述】:

我正在尝试正确排列我的 SwiftUI 列表,但我无法将列表分隔线居中。出于某种原因,列表似乎居中,但分隔线与尾随对齐,而不是与中心对齐。

我为元素添加了一些背景颜色以对其进行调试,但似乎无法找出发生这种情况的原因。

似乎也没有任何填充物阻挡它。也许它与列表样式有关?

代码如下:

 List 
                    
                    
                    ForEach(savedpoems, id:\.title) SavedPoem in
                       
                        NavigationLink (destination: DetailViewSaved(savedPoem: SavedPoem))
                          
        
                            
                                HStack 
                                    
                        
                                    VStack (alignment: .leading)
                                        Text("\(SavedPoem.title ?? "")")
                                            .font(.headline)
                                            .foregroundColor(.black)
                                            .lineLimit(1)
                                            .padding(.bottom, 3)
                                            
                                        
                                        Text("\(SavedPoem.author ?? "")")
                                            .font(.subheadline)
                                            .foregroundColor(.secondary)
                                    
                                    .padding(.trailing)
                                    .background(Color.orange)
                                    
                                    Spacer()
                                    
                                
                                .padding()
                                .background(Color.blue)
                            
                    

                        .padding(.all, 0)
                        .background(Color.red)
                    

                        
                    .onDelete(perform: remove)
                    .background(Color.yellow)
                                    
                
            
            .navigationTitle("")
            .navigationBarHidden(true)
            .padding(.bottom, 30)
            .listStyle(PlainListStyle())
            .background(Color.black)
          
                    

            
        .padding(.horizontal)
        .edgesIgnoringSafeArea(.bottom)

有什么建议吗?提前致谢。

【问题讨论】:

默认列表行分隔符是......只是默认值 - Apple 按照他们的想法绘制它们。如果它们不符合您的需求,您可以隐藏它们(参见 ***.com/a/62598818/12299030)并自己绘制(参见 ***.com/a/58787290/12299030) 所以这不是我的代码的问题,默认行分隔符总是对齐尾随? 【参考方案1】:

如果您将.leading .padding 减少为您的List,它应该会变平。

以下是您的代码示例,说明放置位置(底部)

.padding(.leading, -16)
    //Something not Listed I placed a VStack
    .padding(.horizontal)
    .edgesIgnoringSafeArea(.bottom)

【讨论】:

以上是关于为啥我的 SwiftUI 列表分隔符没有正确排列?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Swiftui 中主线程不按顺序排列

为啥 SwiftUI ObservedObject 不能在列表行中工作?

SwiftUI 表单部分标题和行的格式不正确

如何在 SwiftUI 中正确排列 Stack 中的元素

为啥我的绑定 [String] 不会更改我的多选列表 SwiftUI

如何隐藏 SwiftUI 列表分隔符 [重复]