SwiftUI:如何使图像与列表中的屏幕边缘齐平?
我想使列表中的图像与屏幕边缘齐平,但如果向图像添加SwiftUI:如何使图像与列表中的屏幕边缘齐平?,swift,swiftui,Swift,Swiftui,我想使列表中的图像与屏幕边缘齐平,但如果向图像添加.listRowInsets(EdgeInsets()),则不会发生任何事情。 如果我向VStack添加相同的代码,列表的格式就会被破坏 List { ForEach(users, id: \.id) { User in VStack(alignment: .leading) { Image(User.image) .resizable()
.listRowInsets(EdgeInsets())
,则不会发生任何事情。
如果我向VStack添加相同的代码,列表的格式就会被破坏
List {
ForEach(users, id: \.id) { User in
VStack(alignment: .leading) {
Image(User.image)
.resizable()
.scaledToFill()
Text(User.name).font(.body)
}
}
} .listStyle(GroupedListStyle())
无法看到边到边绘制图像的原因是默认情况下,
列表
应用了填充。有两种可能的方法:
第一个。如果您的用户列表不是很大,您可以将您的ForEach
放在ScrollView
中,默认情况下该视图没有应用填充。请注意,对于大型列表,这是非常低效的:
ScrollView {
ForEach(users, id: \.id) { user in
VStack(alignment: .leading) {
Image(user.image)
.resizable()
.scaledToFill()
Text(user.image)
}
}
}
第二种方法有点老套。您可以将负片填充应用于图像
,将其一直延伸到边缘:
List {
ForEach(users, id: \.id { user in
VStack(alignment: .leading) {
Image(user.image)
.resizable()
.scaledToFill()
.padding([.leading, .trailing], -16.0)
Text(user.name)
}
}
}
还值得一提的是,如果您将您的用户类型声明为可识别的:
extension User: Identifiable {}
您将能够以如下更简单的方式声明您的ForEach
:
ForEach(users)