[英]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.