【发布时间】:2021-04-11 05:06:28
【问题描述】:
如果容器中有一个带有图像的 NavigationLink(可调整大小、缩放以填充并剪裁为更小的框架),则无法按下 NavigationLink。我假设这与图像中被“剪掉”的部分仍然实际存在并阻塞了 NavigationLink 有关。
这是一个复制行为的简短示例:
struct ContentView: View {
var body: some View {
NavigationView {
VStack {
VStack {
NavigationLink(destination: Text("Hello, world!")) {
Text("Press me")
}
}
Image("background")
.resizable()
.scaledToFill()
.frame(height: 60)
.clipped()
}
}
}
}
“背景”可以是资产文件夹中的任何类型的图片。
我试图弄乱 zIndexes;那没用。
有一个 hack 有效:我使用了 UIImage,通过将其转换为 CGImage 并返回为 UIImage,将其裁剪为我想要的 Image 的纵横比。之后,我可以再次按下 NavigationLink,但从我的手机滞后可以明显看出它太贵了。我试图通过将裁剪后的图像保存到文档目录来解决这个问题,然后当纵横比不够相似时,我会重新裁剪、保存并重新加载图像,但这仍然对我的项目的性能造成了影响。
请就我应该如何处理这种情况提供一些建议。提前感谢您的帮助。
【问题讨论】: