SwiftUI:如何动态设置自定义视图大小

时间:2020-01-07 18:26:35

标签: ios swift swiftui

我使用SwiftUI。我需要一个自定义视图。自定义视图的宽度应等于超级视图的宽度。自定义视图包含两个图像视图,分别向左和向右对齐。每个图像视图具有相同的宽度和高度(纵横比= 1)。两个图像视图有10点空间。我将在图像视图(比例纵横比填充)中显示不同尺寸的图像。

enter image description here

如果使用GeometryReader,则可以动态设置图像视图框架,但是如何动态设置GeometryReader框架?如果我使用HStack而不使用GeometryReader,则图像视图框架是可变的。如何在SwiftUI中做到这一点?

1 个答案:

答案 0 :(得分:1)

可能是以下内容的某种变体:

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")

如果源图像资产的宽高比不为1:1,请将contentMode设置为.fill,并限制HStack或{{1 }}在其父级内部使用CustomView