首页 > 解决方案 > SwiftUI:如何动态设置自定义视图大小

问题描述

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

在此处输入图像描述

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

标签: iosswiftswiftui

解决方案


也许以下的一些变体:

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的帧高度。HStackCustomView.frame(height: ..)


推荐阅读