簡體   English   中英

SwiftUI ScrollView 縱橫滾動

[英]SwiftUI ScrollView vertical and horizontal scroll

我有一個滾動視圖,我想根據@State 更改滾動的方向。

struct HomeScreen: View {
    @State var isVertical: Boolean = true

    var body: some View {
    VStack{
        Button(action: {
                self.isVertical.toggle()
            }) {
                Text("press me")
        }.padding()
        ScrollView(self.isVertical == true ? .horizontal : .vertical, showsIndicators: true){
                    if(self.isVertical){
                        HStack {
                            Text("a")
                            Text("b")
                            Text("c")
                            Text("d")

                            Spacer()
                        }
                    } else {
                        VStack{
                            Text("a")
                            Text("b")
                            Text("c")
                            Text("d")
                        }
                    }
                }.padding()
    }
}

當第一次在這個屏幕上滾動視圖是垂直的時,只要我點擊按鈕並反轉 state,滾動視圖就會改變並變得瘋狂,垂直和水平滾動。 我究竟做錯了什么? 我希望基於您正在垂直或水平滾動的那個。 非常感謝

這是固定的變體(也更正了isVertical的處理以符合含義)

使用 Xcode 11.4 / iOS 13.4 測試

struct HomeScreen: View {
    @State var isVertical: Bool = true

    var body: some View {
        VStack{
            Button(action: {
                    self.isVertical.toggle()
                }) {
                    Text("press me")
            }.padding()
            ScrollView(self.isVertical ? .vertical : .horizontal, showsIndicators: true){
                        if(self.isVertical){
                            VStack {
                                Text("a")
                                Text("b")
                                Text("c")
                                Text("d")

                                Spacer()
                            }
                        } else {
                            HStack{
                                Text("a")
                                Text("b")
                                Text("c")
                                Text("d")
                            }
                        }
                    }.id(isVertical)       // << main part !!
                     .padding()
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM