web-dev-qa-db-fra.com

SWIFTUI ScrollView uniquement Faites défiler dans une seule direction

Essayer de faire une liste personnalisée à l'aide d'une vue comme style de ligne de liste (pour vous débarrasser de la ligne laid de la ligne de la liste par défaut).

Cependant, une fois que j'ai mis mes lignes de Zstack dans une vue de défilement, la vue de défilement fait défiler dans les deux sens et non seulement verticalement.

Voici le contenuView:

NavigationView {
            ScrollView{
                VStack(alignment: .leading){
                    ForEach(friends) { friends in
                        NavigationButton(destination: MessageDetailView(friend: friends)) {
                            CustomListItem(friend: friends)
                        }
                    }
                    Spacer()
                }
            }
                .foregroundColor(.black)
                .navigationBarTitle(Text("Messages"))
        }

et voici le CustomLisTem:

Group{
            ZStack {
                RoundedRectangle(cornerRadius: 10)
                    .shadow(radius: 1, y:1)
                    .frame(width: UIScreen.main.bounds.width - 32, height: 75)
                    .foregroundColor(.gray)

                HStack {
                    Image(systemName: "person.crop.circle")
                        .resizable()
                        .frame(width: 50, height: 50)
                    VStack(alignment: .leading) {
                        HStack {
                            Text(friend.name)
                                .font(.headline)
                            Text("\(friend.date, formatter: dateFormatter)")
                        }
                        Text(friend.messagesReceived[0])
                            .font(.subheadline)
                        }       .lineLimit(nil)
                    Spacer()
                    Image(systemName: "chevron.right.circle")
                        .foregroundColor(.black)
                    }.padding(10)
                }.padding([.leading, .trailing])
        }

Y a-t-il un moyen de limiter le défilement à la verticale ou de forcer une image à ce sujet?

Essayer d'utiliser le modificateur .Frame (...) ne fonctionne pas comme je l'ai essayé. Cela se traduit dans la vue qui ne se charge pas du tout.

Exemple d'images:

Without ScrollView

With ScrollView wrapping the VStack

8
mg_berk

Essayez d'être plus spécifique avec le sens de défilement comme celui-ci

ScrollView(.vertical) {}
1
ErnestGaisie