SwiftUI:通过“ navigationBarItems”修改列表时,“ listRowInsets”无法正常工作

时间:2020-10-27 11:29:18

标签: swiftui

我想使用这样的搜索按钮制作导航视图:

enter image description here

我使用listRowInsets(EdgeInsets())删除图像的前导和尾随填充。

一切正常,然后再添加搜索按钮:

import SwiftUI

struct demoUI: View {
    var body: some View {
        NavigationView {
            List {
                Image("food")
                    .scaledToFill()
                    .frame(height: 200)
                    .clipped()
                    .listRowInsets(EdgeInsets())
                
                ForEach(0 ..< 5) {_ in
                    Text("List Item ")
                }
                
            }
            .navigationTitle(Text("Featured"))
        }
    }
}

struct demoUI_Previews: PreviewProvider {
    static var previews: some View {
        demoUI()
    }
}

enter image description here

但是当我将图标添加到导航栏中时,填充再次显示:

struct demoUI: View {
    var body: some View {
        NavigationView {
            List {
                Image("food")
                    .scaledToFill()
                    .frame(height: 200)
                    .clipped()
                    .listRowInsets(EdgeInsets())
                
                ForEach(0 ..< 5) {_ in
                    Text("List Item ")
                }
                
            }
            .navigationTitle(Text("Featured"))
            .navigationBarItems(trailing: Image(systemName: "magnifyingglass.circle").imageScale(.large))
        }
    }
}

enter image description here

我的Xcode版本是12.1(12A7403)。 这是错误还是预期的结果?

1 个答案:

答案 0 :(得分:1)

明确使用列表样式

        List {
            Image("food")
                .scaledToFill()
                .frame(height: 200)
                .clipped()
                .listRowInsets(EdgeInsets())
            
            ForEach(0 ..< 5) {_ in
                Text("List Item ")
            }
            
        }.listStyle(PlainListStyle())   // << here !!