Как скрыть разделительную линию под панелью навигации?

Мне нужно удалить разделитель под NavigationView, это происходит, когда у меня установлен .listStyle(.plain), потому что мне нужно вручную вставить в список. Я также пробовал встроить список в VStack, но это не помогло. При добавлении текста внутри VStack я могу избавиться от разделительной линии, но мне нужно добиться этого без текста. Пожалуйста, помогите мне достичь этого.

Пожалуйста, найдите фрагмент кода 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)
        }
    }
}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
110
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам нужно поместить .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)
            }
}

Спасибо за поддержку, все разделители удалены

Karthi Rasu 10.05.2024 15:37
Ответ принят как подходящий

Вы можете использовать модификатор представления .listRowSeparator(.hidden), чтобы скрыть разделитель в данной строке. Однако для первой строки будут удалены верхний и нижний разделители. Вы можете использовать Divider(), чтобы воссоздать отсутствующий нижний разделитель.

struct ContentView: View {
    private let horizontalUsers: [String] = Array(repeating: "Steve Jobs", count: 5)
    private let verticalUsers: [String] = Array(repeating: "John Doe", count: 5)

    var body: some View {
        NavigationStack {
            List {
                VStack {
                    ScrollView(.horizontal) {
                        HStack {
                            ForEach(horizontalUsers, id: \.self) { horizontalUserName in
                                Label(horizontalUserName, systemImage: "person.circle")
                            }
                        }
                    }
                    Divider()
                }
                .listRowSeparator(.hidden)
                .listRowInsets(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 0))

                ForEach(verticalUsers, id: \.self) { name in
                    Text(name)
                }
            }
            .listStyle(.plain)
            .navigationTitle("Users")
        }
    }
}

Вот как это выглядит:

Другие вопросы по теме