在我的SwiftUI应用程序中,当用户单击列表中的项目时,它会将用户带到详细信息视图。在详细信息视图中,我们需要显示从核心数据加载的图像。图像数据将在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!)!
}
}