[英]Rows all same height after using UITableViewAutomaticDimension
[英]Same height for all rows in SwiftUI List
這是一個解決方法。 我已經使用 geometryReader 來計算內容高度。一旦我們獲得了內容的最大高度,在首選項的幫助下更新單元格。
struct TestView: View {
@State var content = ["row1", "row2\nrow2\nrow2", "row3"]
@State var rowHeight: CGFloat = 0
var body: some View {
List {
ForEach(0..<content.count, id: \.self) { index in
Text(self.content[index])
.frame(minHeight: self.rowHeight) // set height as max height
.background(
GeometryReader{ (proxy) in
Color.clear.preference(key: SizePreferenceKey.self, value: proxy.size)
})
.onPreferenceChange(SizePreferenceKey.self) { (preferences) in
let currentSize: CGSize = preferences
if (currentSize.height > self.rowHeight) {
self.rowHeight = currentSize.height //As height get change upto max height , put value in self.rowHeight
}
}
}
}
}
}
struct SizePreferenceKey: PreferenceKey {
typealias Value = CGSize
static var defaultValue: Value = .zero
static func reduce(value: inout Value, nextValue: () -> Value) {
nextValue()
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.