SwiftUI ScrollView с горизонтальной прокруткой на watchOS отключает контент? - PullRequest
2 голосов
/ 09 июля 2019

У меня есть ScrollView с HStack объектов Rectangle (с рамкой только для видимости).Вот код:

var body: some View {
        ScrollView([.horizontal]) {
            HStack(alignment: .top, spacing: 4.0) {
                ForEach(0..<3) { _ in
                    Rectangle()
                        .foregroundColor(.gray)
                        .border(Color.red, width: 8)
                        .frame(width: 140, height: 140)
                }
            }
            .frame(width: 140*3 + 4.0*3, height: 140)
        }
}

Когда я настраиваю ScrollView, чтобы разрешить горизонтальную и вертикальную прокрутку (через инициализатор ScrollView([.horizontal, .vertical])), он изменяет размеры объектов соответствующим образом и прокручивает по горизонтали, отскакивая по вертикали:

ScrollView on watchOS laying out correctly

Отскок, однако, не идеален, поэтому я бы хотел, чтобы он просто прокручивался по горизонтали, не отскакивая по вертикали, - но когда я настраиваю его, чтобы разрешить горизонтальныйпрокручивая (ScrollView([.horizontal])), он заканчивает тем, что обрезает содержимое внизу и прокручивает по вертикали для отображения содержимого:

ScrollView on watchOS cutting off content

Прежде чем я отправлю этокак ошибка в Feedback Assistant, я хотел убедиться, что я не пропускаю что-то простое.Я сделал , чтобы увидеть это примечание о ScrollViews в примечаниях к выпуску:

ScrollView не всегда имеет размер, соответствующий ожидаемому для его содержимого.(49204262)

Обходной путь: измените размер представления внутри ScrollView, применив модификатор frame (width: height: alignment :) к внутреннему виду.(49204262)

Но я применил модификатор frame(width:height:alignment:) к внутреннему HStack, и он все еще отключается в этой ситуации, поэтому мне интересно, если это еще одна ошибка или я пропускаючто-то простое.

...