gpt4 book ai didi

ios - 如何在 SwiftUI 中将项目与 VStack 内的顶部对齐?

转载 作者:行者123 更新时间:2023-12-04 11:58:55 25 4
gpt4 key购买 nike

我刚开始使用 swiftui,但在 ui 对齐方面遇到了问题。以下代码从图像顶部创建一个空间

VStack(alignment: .leading) {
Image(item.imageUrl)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 72, height: 72, alignment: .top).padding(.top,0)
Text("\(item.name)").font(Font.system(size:12, design: .default))
.multilineTextAlignment(.center)
.frame(maxWidth: .infinity).lineLimit(2)
}
}
我可以看到 VStack 接受参数 alignment ,但它是水平对齐。我需要的是图像应该贴在其 super View 的顶部。
有没有办法在不使用 Spacer() 的情况下做到这一点。
就像在 react-native 中一样,我们曾经有 justifyContent 和 alignItems 用于 child 的水平和垂直对齐。
更新:
Text 或任何 View 也存在同样的问题。
例如。此代码将两个文本放在 View 的中心
 VStack(alignment: .leading, spacing: 0) {
Text("line 1")
Text("line 2")
}
enter image description here
VStack 中的参数对齐用于水平对齐。
现在要将这些文本对齐到顶部,我能想到的唯一方法是引入 Spacer()像这样:
struct MyCustomView:View {
var body: some View {
VStack(alignment: .leading, spacing: 0) {
Text("line 1")
Text("line 2")
Spacer()
}
}
这确实暂时解决了问题:
enter image description here
但是间隔器会在复杂 View 中产生问题,假设另一个开发人员想要在我的 View 下方添加一个自定义 View (在本例中为第 3 行),间隔器将在两者之间创建额外的空间
VStack {
MyCustomView()
Text("line 3")
}
enter image description here
有没有更好的方法让我的 subview (和后续 View )在 VStack 中保持与顶部对齐而没有间隔?

最佳答案

您可以尝试使用.frame()修饰符使 VStack()在它的 super View 中取全尺寸。在框架中,您可以对齐您的内容 topLeading

var body: some View {
VStack(alignment: .leading, spacing: 0) {
Text("line 1")
Text("line 2")
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .topLeading)
.border(Color.red)
}
该解决方案不需要垫片

关于ios - 如何在 SwiftUI 中将项目与 VStack 内的顶部对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65356584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com