我使用 SwiftUI。我需要一个自定义 View 。自定义 View 宽度应等于父 View 宽度。自定义 View 包含两个 ImageView ,分别左对齐和右对齐。每个 ImageView 具有相同的宽度和高度(纵横比 = 1)。两个 ImageView 有 10 个点空间。我将在 ImageView 中显示不同大小的图像(缩放纵横比填充)。
如果我使用GeometryReader
,我可以动态设置 ImageView 框架,但是如何动态设置GeometryReader
框架呢?如果我在没有 GeometryReader
的情况下使用 HStack
,则 ImageView 帧是可变的。如何在 SwiftUI 中执行此操作?
最佳答案
可能是以下的一些变体:
struct CustomView: View {
var body: some View {
HStack(spacing: 10) {
Image(systemName: "heart.fill")
.resizable()
.aspectRatio(1, contentMode: .fit)
Image(systemName: "heart.fill")
.resizable()
.aspectRatio(1, contentMode: .fit)
}.frame(maxWidth: .infinity)
}
}
两张图片都保持 1:1 的纵横比,它们之间有 10 个点的间距,但允许使用 .frame
修饰符水平增长。
根据需要将 Image(systemName: "heart.fill")
替换为所需的图像源。
如果您的源图像 Assets 没有 1:1 的宽高比,请将 contentMode
设置为 .fill
,并限制 的帧高度HStack
或其父级内部的 CustomView
使用 .frame(height: ..)
。
关于ios - SwiftUI:如何动态设置自定义 View 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59634077/