如何在不执行视图控制器的情况下快速打开视图控制器?

时间:2019-11-29 12:30:56

标签: ios swift uiviewcontroller

我必须显示包含大量图像和视频的各种文件夹,但是当我单击该文件夹时,加载它需要几秒钟的时间,这似乎是滞后的或挂起的...

我想先打开视图控制器,然后显示加载过程。 怎么做 ???

5 个答案:

答案 0 :(得分:5)

您可以像这样在后台加载数据

DispatchQueue.global(qos: .background).async {
   // load data here
}

之后,需要在主线程中加载UI

DispatchQueue.main.sync {
            // show data here
        }

答案 1 :(得分:1)

您可以使用 SDWebImage 解决照片或图像加载问题...

myimageview.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "empty_image_icon"))

//imageURL is URL of image.
//empty_image_icon id the default image which will show during process.

答案 2 :(得分:1)

您可以使用viewDidAppear()方法获取数据/媒体,并使用viewDidLoad() 方法开始为加载指示器设置动画。

如果您将数据加载到viewWillAppear()中,而不是viewController,则需要花费几秒钟的时间。

答案 3 :(得分:0)

viewWillAppear()方法获取数据,而不以viewDidLoad()方法获取数据。

答案 4 :(得分:0)

创建视图后,可以调用获取数据功能。 viewDidAppear()方法在您创建视图之后就可以使用,但是,只要您创建的视图在屏幕上可见,该方法就可以使用,因此它并不是每种情况的最佳解决方案。这意味着,您的数据可能会不必要地获取。例如,只要您更改视图控制器并再次返回该屏幕或切换应用程序或您的应用程序成为前台, viewDidAppear()方法就会起作用。

因此,使用 dispatchQueue SDWebImage 库可能是您的答案。