【问题标题】:Is there a way to have two images in a VStack and have the images resized and scaledToFill? SwiftUI有没有办法在 VStack 中有两个图像并调整图像大小和 scaledToFill? SwiftUI
【发布时间】:2025-12-08 06:35:02
【问题描述】:

我在 VStack 中有两个图像,并且两个图像都可以调整大小。其中一张图像被设置为用剪辑填充。

VStack(spacing: 8) {
    Image(uiImage: project.image!)
        .resizable()
        .aspectRatio(contentMode: .fill)
    ZStack {
        Image(uiImage: UIImage(named: "ic_add_project")!)
        Image(uiImage: UIImage(named: "corner_pages_72pt")!)
            .resizable()
    }
}

通过删除.aspectRatio(contentMode: .fill),我几乎得到了我想要的结果,但顶部图像被拉伸和扭曲。

如何将两个图像设置为一个大小相同的图像并让图像 scaledToFill 使其不会被拉伸?我不能使用固定的帧大小,我希望在堆栈之间均匀分布图像。

【问题讨论】:

    标签: swift xcode swiftui widget


    【解决方案1】:

    尝试将它们放入颜色叠加中。颜色填充可用空间,因此两种颜色均等地填充空间,叠加中的图像应按指定大小调整,不会相互影响。

    VStack(spacing: 8) {
        Color.clear.overlay(
           Image(uiImage: project.image!)
            .resizable()
            .aspectRatio(contentMode: .fill)
        )
        Color.clear.overlay(
          ZStack {
            Image(uiImage: UIImage(named: "ic_add_project")!)
            Image(uiImage: UIImage(named: "corner_pages_72pt")!)
                .resizable()
        })
    }
    

    【讨论】:

    • 成功了!非常感谢你。我只需要顶部的颜色叠加层,即填充层。
    【解决方案2】:

    这行得通吗?

    VStack(spacing: 8) {
            Image(uiImage: image)
                .resizable()
                .scaledToFill()
            
            ZStack {
                Image(uiImage: image)
                    .resizable()
                    .scaledToFill()
                Image(uiImage: image)
                    .resizable()
            }
        }
    

    【讨论】:

      最近更新 更多