Просмотр прокрутки SwiftUI: ошибка при переключении между вертикальной и горизонтальной прокруткойIOS

Программируем под IOS
Ответить
Anonymous
 Просмотр прокрутки SwiftUI: ошибка при переключении между вертикальной и горизонтальной прокруткой

Сообщение Anonymous »

Если я переключу ось прокрутки следующим образом:

Код: Выделить всё

struct ScrollViewTest: View {
@State private var axis: Axis.Set = .horizontal

var body: some View {
VStack {
ScrollView(axis) {
stack
}

Spacer()

Button("Switch Axis") {
axis = axis == .horizontal ? .vertical : .horizontal
}
}
}

@ViewBuilder
var stack: some View {
let stack = axis.contains(.horizontal) ?  AnyLayout(HStackLayout()) : AnyLayout(VStackLayout())

stack {
ForEach(0.. .vertical -> .horizontal].
Чтобы решить эту проблему, мне нужно вместо этого выполнить ветвление if-else:
[code]
var body: some View {
VStack {
if axis == .horizontal {
ScrollView(.horizontal) {
stack
}
} else {
ScrollView(.vertical) {
stack
}
}

Spacer()

Button("Switch Axis") {
axis = axis == .horizontal ? .vertical : .horizontal
}
}
}
Это решает проблему, но меняет структурную идентичность (Теперь это _ConditionalContent).
Кто-нибудь из вас знает, почему представление прокрутки делает это?

Я рассмотрел этот вопрос SO: вертикальная и горизонтальная прокрутка SwiftUI ScrollView. Код, который я написал, эффективно делает то же самое. Что я хочу знать, так это (причина/любое возможное объяснение) этой ошибки (я просто надеюсь, что кто-нибудь ее обнаружил).

Подробнее здесь: https://stackoverflow.com/questions/798 ... -scrolling
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»