从 Core Data 加载图像使 NavigationView 过渡变得跳跃

Posted

技术标签:

【中文标题】从 Core Data 加载图像使 NavigationView 过渡变得跳跃【英文标题】:Loading Image from Core Data makes NavigationView transition jumpy 【发布时间】:2020-12-08 11:17:09 【问题描述】:

在我的 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!)!
            
        

如何解决跳跃的过渡?

【问题讨论】:

【参考方案1】:

.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!)!
        
    

【讨论】:

以上是关于从 Core Data 加载图像使 NavigationView 过渡变得跳跃的主要内容,如果未能解决你的问题,请参考以下文章

iOS Core Data 无法从存储的 URI 打开图像

如何使用 SQLite 文件预加载 Core Data,该文件引用使用“外部存储”保存的图像?

iOS Core Data 图像实际上并未被删除

从 Core Data 中获取加载数据的具体价值?

当用户滚动 MKMapView 时,从 Core Data 加载其他对象

如何在 Flutter 中显示从 .NET Core API 加载的 jpeg 图像?