如何最大限度地减少包含大量图像的Swift页面的加载时间?

时间:2018-01-13 15:52:24

标签: ios swift

我正在构建一个包含大约65 MB数据的应用程序,主要是以图像的形式存储为类的实例。现在应用程序运行良好,除了一件事:加载包含所有信息的ViewController大约需要10秒钟。这是在应用程序打开或第一次加载到前台后加载页面时发生的。

这是代码的样子(除了AnatomyView类有很多很多实例):

class SectionViewController: UIViewController, UIScrollViewDelegate {
class AnatomyView {
        var viewName: String = ""
        var normalImage: UIImage = UIImage(named: "Logo.jpg")!
        var markedImage: UIImage = UIImage(named: "Logo.jpg")!
        var steps: [UIImage] = []
        var attribution: String = ""
        init(viewName: String, normalImage: UIImage, markedImage: UIImage, steps: [UIImage], attribution: String){
            self.viewName = viewName
            self.normalImage = normalImage
            self.markedImage = markedImage
            self.steps = steps
            self.attribution = attribution
        }
    }

 let lateralYShoulder = AnatomyView(
        viewName: "Lateral Y",
        normalImage: UIImage(named: "Lateral Y Normal Unmarked.jpg")!,
        markedImage: UIImage(named: "Lateral Y Normal Marked.jpg")!,
        steps: [UIImage(named: "Lateral Y Step 1.jpg")!, UIImage(named: "Lateral Y Step 2.jpg")!],
        attribution: "Case courtesy of Mr Andrew Murphy\nRadiopaedia.org, rID: 48080"
    )

减少加载时间的策略有哪些?有没有办法将数据存储在其他地方,然后只导入需要的东西?如此长的加载时间使应用程序完全无法使用。

编辑:以下是图片在应用中的显示方式。滚动视图中一次最多有8-10个图像,并排排列。

2 个答案:

答案 0 :(得分:0)

如果您使用UIScrollView显示加载时间很长的所有信息,则需要加载显示的信息,但如果您使用UIColllectionView或UITableView以网格方式划分信息,则内容会加载为用户滚动,时间下降了很多。

答案 1 :(得分:0)

我建议你看看CATiledLayer和下面的Apple例子:

来自说明:

“PhotoScroller”演示了如何使用嵌入式UIScrollViews和CATiledLayer创建丰富的用户体验,以便显示和分页可以单独平移和缩放的照片。 CATiledLayer用于提高使用高分辨率图像或大量照片进行分页,平移和缩放的性能。

https://developer.apple.com/library/content/samplecode/PhotoScroller/Introduction/Intro.html