簡體   English   中英

在 SwiftUI 視圖中設置高度的問題

[英]Issues setting height in SwiftUI View

我已經實現了下面的設計,但是我有一個似乎微不足道的錯誤來找出解決方案。 下面的代碼可以繪制視圖,並且能夠正確顯示數據,只有當我在本地獲取數據時,而不是當我通過網絡獲取數據時。 視圖沒有繪制卡片我必須單擊另一個選項卡並返回帶有卡片的視圖。 我試圖弄清楚問題可能是什么,並且我能夠找出這個代碼是源代碼.frame(minHeight: 0, maxHeight: .infinity) ,它設置了高度。 如果我刪除這條線,我可以看到卡片,但有一個小腿高度。 我嘗試將高度更改為 static 值,但沒有成功。 我會感謝你的幫助。

查看一

ScrollView(.horizontal, showsIndicators: false){
    HStack(spacing: 20){
        ForEach(someIterator) { someViewModel in
            CardView(myViewModel: someViewModel)
        }
    }.padding([.leading,.bottom,.trailing])
}
.frame(height: 420)

查看二

struct CardView: View {
    @ObservedObject var myViewModel: MyViewModel
    var body: some View {
        VStack(){
            HStack(){
                Text(myViewModel.mymodel.value)
                Text("Some text")
            }
            Text(myViewModel.mymodel.description)

        }
        .frame(minWidth: 0 , maxWidth: 327, maxHeight: 380)
        .frame(minHeight: 0 , maxHeight: .infinity) // The issue
        .background(Color("Blue"))
        .cornerRadius(10)
    }
}

數據

ScrollView需要提前知道內容大小,這就是為什么您觀察到從網絡獲取數據的問題,因為在這種情況下,滾動視圖中沒有初始內容並且它被擠壓

這是一個解決方案,在 Xcode 11.4 / iOS 13.4 上使用復制代碼進行了測試

ScrollView(.horizontal, showsIndicators: false){
    HStack(spacing: 20){
        ForEach(someIterator) { someViewModel in
            CardView(myViewModel: someViewModel)
        }
    }.padding([.leading,.bottom,.trailing])
    .frame(height: 420)                      // << move inside !!
}

暫無
暫無

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

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