我有一个列表视图,其中包括1)页眉视图,2)动态ForEach视图和3)页脚视图。我的问题是标题视图所在的第一行将无法调整大小以适合其内容。主视图的代码如下:
var body: some View {
List {
GeometryReader { geometry in
self.headerView(size: geometry.size)
}
ForEach(self.user.posts, id: \.self) { post in
Text(post.title)
}
Text("No more posts...")
.font(.footnote)
}
.edgesIgnoringSafeArea(.all)
}
这是我要实现的观点:
这是我到目前为止所拥有的...:
如果有任何合并,则在列表之外的标题视图会显示正常,但是,这不是我要查找的视图。
谢谢。
P.S:为大图像表示歉意,我不确定如何使它们显示为缩略图...
答案 0 :(得分:2)
使用GeometryReader很好,但是应该以正确的方式使用它!
import SwiftUI
struct ContentView: View {
var body: some View {
// to get the size of view, we are going to use the width later
GeometryReader { p in
List {
GeometryReader { _p in
// put your image or whatever ...
// and set the frame width
Color.red.frame(width: p.size.width, alignment: .center)
}
// and finally fix the height !! to work as expected
.frame(height: 100)
Text("By by, World!")
}
}
}
}
答案 1 :(得分:0)
我更愿意将Sections
用于类似目的(各节允许使用不同的配置),例如
var body: some View {
List {
Section {
// << header view is here with own size
}
.listRowInsets(EdgeInsets()) // << to zero padding
Section { // << dynamic view is here with own settings
ForEach(self.user.posts, id: \.self) { post in
Text(post.title)
}
}
Section { // footer view is here with own size
Text("No more posts...")
.font(.footnote)
}
}
.edgesIgnoringSafeArea(.all)
}