SwiftUI:当“navigationBarItems”修改列表时,“listRowInsets”无法按预期工作[重复]

Posted

技术标签:

【中文标题】SwiftUI:当“navigationBarItems”修改列表时,“listRowInsets”无法按预期工作[重复]【英文标题】:SwiftUI: 'listRowInsets' dosen't work as expected when the List is modified by 'navigationBarItems' [duplicate] 【发布时间】:2020-10-27 11:29:18 【问题描述】:

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

我使用 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()
    

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

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))
        
    

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

【问题讨论】:

【参考方案1】:

明确使用列表样式

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

【讨论】:

以上是关于SwiftUI:当“navigationBarItems”修改列表时,“listRowInsets”无法按预期工作[重复]的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 当手指移动一点时让 LongPressGesture 保持不变?

当 UserDefaults 值更改 SwiftUI 时,@FetchRequest 谓词不会更新

当 Picker selectedValue 更改时,SwiftUI 2.0 App 崩溃

SwiftUI:当“navigationBarItems”修改列表时,“listRowInsets”无法按预期工作[重复]

Swiftui:当用户点击推送通知时,如何导航到特定的 NavigationLink?

SwiftUI:当列表太长时,SearchBar 移出边界