0

我目前正在使用 GeometryReader 和 Image 在 3 列网格中显示图像。在这个网格中,我希望当用户点击图像时,他们会看到更大的版本。

但是,当我实现它时,GeometryReader 无法正常运行。GeometryReader 中的图像超出了传递给 GeometryReader 的帧大小。

我检查过 GeometryReader 的大小是 1:1 的比例,但是当你看到视图层次的截图时,图像的大小是不同的。

下面是我的自定义图像视图的代码。

GeometryReader { geo in
        if isZoomable {
            Image("Image_gallery_default")
                .centerCropped(width: geo.size.width, height: geo.size.height)
                .aspectRatio(1.0, contentMode: .fill)
                .onTapGesture {
                    showImage = true
                }
        } else {
            Image("Image_gallery_default")
                .centerCropped(width: geo.size.width, height: geo.size.height)
        }
    }

而 centerCropped 修饰符只是一组 resizable/scaletofill/frame/clipped 来使图像中心裁剪。

self
        .resizable()
        .scaledToFill()
        .frame(width: width, height: height)
        .clipped()

屏幕上的图像只是很好的图片。

但是,如果您点击第一张图片(turlip one)的右侧,它将改为在右侧显示图片。

为什么 Image 视图溢出而不是跟随 GeometryReader 的宽度?我搜索以找出解决方案,但没有出现类似的情况。

手机屏幕截图

调试图像的视图层次结构

4

0 回答 0