SwiftUI - ScrollView имеет ширину 0 и мой контент не виден - PullRequest
1 голос
/ 10 января 2020

Я пытаюсь использовать представление прокрутки для прокручиваемого содержимого, но всякий раз, когда я вкладываю свои представления в представление прокрутки, я замечаю, что представления из моих стеков возвращаются в иерархию представлений, и ничего не остается видимым в экран. Я также видел, что всякий раз, когда я использую ScrollView, он добавляет еще один контроллер представления хостинга, и я не знаю, является ли это нормальным поведением.

    var body: some View {
    NavigationView {
        ScrollView(.vertical, showsIndicators: false) {
            VStack {
                ForEach(bookLibrary.indices, id: \.self) { index in
                    HStack {
                        ForEach(self.bookLibrary[index], id: \.self) { book in
                            BookView(book: book)
                        }
                    }
                }
            }
        }
    }
}

Получение этой иерархии представления. Вы также можете видеть, что HostingScrollView имеет ширину 0.

enter image description here

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Если вы не хотите использовать GeometryReader, просто вставьте представление нулевой высоты с правильной шириной, как это

var body: some View {
    ScrollView {
        VStack {
            Color.clear
                .frame(maxWidth: .infinity, maxHeight: 0)
            ForEach(...) { each in
                ...
            }
        }
    }
}
0 голосов
/ 11 января 2020

Хотя это и не идеальное решение, вы можете использовать GeometryReader, чтобы установить для рамки вида прокрутки ту же ширину, что и для ее суперпредставления.

NavigationView {

    GeometryReader {geometry in

        ScrollView(.vertical) {

            // TODO: Add content

        }
        .frame(width: geometry.size.width)

    }

}

Этот обходной путь был вдохновлен Ответом Роба Майоффа на другой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...