【发布时间】:2019-09-23 10:35:59
【问题描述】:
我在动态改变依赖于元素数量的列表高度时遇到了一些麻烦。
我尝试了这个解决方案,但没有奏效。
List {
ForEach(searchService.searchResult, id: \.self) { item in
Text(item)
.font(.custom("Avenir Next Regular", size: 12))
}
}.frame(height: CGFloat(searchService.searchResult.count * 20))
【问题讨论】:
-
因此,您的想法是将列表高度(列表视图本身的高度)设置为每个项目 20 像素。如果它有效,在这种情况下它就不能滚动(因为所有元素都有足够的空间)。那为什么不直接使用 VStack 呢?另一方面,如果您的目标是为列表中的项目设置大小,我假设您需要设置项目的大小,而不是列表。不过我对 SwiftUI 不是很熟悉。
-
不,我不需要更改行高。我需要更改列表视图的高度,这取决于元素计数。例如,如果我在数组中只有一个元素 -> 我需要显示只有一行的列表,而这一行将是该列表的整个框架
-
那么,如果你不打算使用滚动,有什么特别的原因让你想使用
List而不是VStack? -
您的解决方案应该有效 - 您的
searchService是否标记为@ObservedObject?而searchResult标记为@Published? -
@Abjox 考虑为
MKLocalSearchCompleter添加一些代理对象并删除NSObject- 它应该开始工作:)
标签: swiftui swiftui-list