从核心数据加载图像使 NavigationView 转换跳跃
Loading Image from Core Data makes NavigationView transition jumpy
在我的 SwiftUI 应用程序中,当用户单击列表中的项目时,它会将用户带到详细信息视图。在细节视图中,我们需要显示从 Core Data 加载的图像。图像数据将在 NavigationView 转换完成之前准备就绪,但当图像出现时 NavigationView 转换变得不稳定。
这是查看跳跃过渡的 GIF 图片:https://gph.is/g/aQqBqRA
请在下面找到我的代码:
Image(uiImage: self.currentImage)
.resizable()
.aspectRatio(contentMode: .fit)
}
.onAppear {
DispatchQueue.main.async {
self.currentImage = UIImage(data: issue.photosArray[0].photoData!)!
}
}
如何解决跳动的过渡问题?
.onAppear
在之前动画开始被调用,所以你加载的图像导致动画期间视图重建,从而导致观察到的效果。
如果图片在之前动画加载不完全,那么最好推迟到之后动画完成,比如
Image(uiImage: self.currentImage)
.resizable()
.aspectRatio(contentMode: .fit)
}
.onAppear {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
self.currentImage = UIImage(data: issue.photosArray[0].photoData!)!
}
}
在我的 SwiftUI 应用程序中,当用户单击列表中的项目时,它会将用户带到详细信息视图。在细节视图中,我们需要显示从 Core Data 加载的图像。图像数据将在 NavigationView 转换完成之前准备就绪,但当图像出现时 NavigationView 转换变得不稳定。
这是查看跳跃过渡的 GIF 图片:https://gph.is/g/aQqBqRA
请在下面找到我的代码:
Image(uiImage: self.currentImage)
.resizable()
.aspectRatio(contentMode: .fit)
}
.onAppear {
DispatchQueue.main.async {
self.currentImage = UIImage(data: issue.photosArray[0].photoData!)!
}
}
如何解决跳动的过渡问题?
.onAppear
在之前动画开始被调用,所以你加载的图像导致动画期间视图重建,从而导致观察到的效果。
如果图片在之前动画加载不完全,那么最好推迟到之后动画完成,比如
Image(uiImage: self.currentImage)
.resizable()
.aspectRatio(contentMode: .fit)
}
.onAppear {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
self.currentImage = UIImage(data: issue.photosArray[0].photoData!)!
}
}