如何隐藏导航栏下方的分隔线?

问题描述 投票:0回答:1

我需要删除导航视图下方的分隔符,当我设置 .listStyle(.plain) 时会发生这种情况,因为我需要为列表提供手动插入。我也尝试过使用 VStack 嵌入列表,但没有帮助,当在 VStack 中添加文本时,我可以去掉分隔线,但我需要在没有文本的情况下实现这一点。请帮助我实现这一目标。

Current Output Image

请找到 SwiftUI 的代码片段:

import SwiftUI

struct ContentView: View {
    var apiHandler = APIHandler.shared
    
    @State var users = [User]()
    
    var body: some View {
        NavigationView {
            List {
                
                //Top Horizontal Layout
                
                ScrollView(.horizontal,showsIndicators: false) {
                    HStack {
                        ForEach(users, id: \.id) { user in
                            HorizontalUserList(user: user)
                        }
                    }
                }
                
                //Vertical Layout
                ForEach(users,id: \.id) { user in
                    VerticalUserList(user: user)
                        .listRowInsets(.init(top: 20, leading: 10, bottom: 0, trailing: 0))
                }
            }
            .listStyle(.plain)
            .listSectionSeparator(.hidden,edges: .all)
            .scrollContentBackground(.hidden)
            .navigationTitle("Users")
        }
        .onAppear(perform: {
            apiHandler.getUsers {
                users = apiHandler.users
            }
        })
    }
}

struct VerticalUserList: View {
    var user : User
    
    @State var image = UIImage()
    
    var body: some View {
        HStack{
            Image(uiImage: image)
                .resizable()
                .cornerRadius(30)
                .aspectRatio(contentMode: .fit)
                .frame(width: 60,height: 60,alignment: .center)
                .onAppear(perform: {
                    guard let url = URL(string: user.avatar) else { return }
                    URLSession.shared.dataTask(with: url) { data, response, error in
                        guard let data = data else { return }
                        guard let image = UIImage(data: data) else { return }
                        DispatchQueue.main.async {
                            self.image = image
                        }
                    }.resume()
                })
            Text(user.first_name + "" + user.last_name)
                .font(.headline)
                .multilineTextAlignment(.leading)
        }
    }
}

struct HorizontalUserList: View {
    var user : User
    
    @State var image = UIImage()
    
    var body: some View {
        VStack{
            Image(uiImage: image)
                .resizable()
                .frame(width: 80,height: 80,alignment: .center)
                .cornerRadius(40)
                .aspectRatio(contentMode: .fit)
                .padding(10)
                .onAppear(perform: {
                    guard let url = URL(string: user.avatar) else { return }
                    URLSession.shared.dataTask(with: url) { data, response, error in
                        guard let data = data else { return }
                        guard let image = UIImage(data: data) else { return }
                        DispatchQueue.main.async {
                            self.image = image
                        }
                    }.resume()
                })
            Text(user.first_name + "" + user.last_name)
                .font(.headline)
                .multilineTextAlignment(.leading)
        }
    }
}
swiftui swiftui-navigationview
1个回答
0
投票

您需要将 .listRowSeparator(.hidden) 放入 List{} 示例:

let contacts = [
        "John",
        "Alice",
        "Bob",
        "Foo",
        "Bar"
    ]

var body: some View {
        List {
                ForEach(contacts, id: \.self) { contact in
                    Text(contact)
                }
                .listRowSeparator(.hidden)
            }
}
© www.soinside.com 2019 - 2024. All rights reserved.