我目前正在使用 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 的宽度?我搜索以找出解决方案,但没有出现类似的情况。