如何在不执行其进程的情况下快速打开视图控制器?
How to quickly open a view controller without executing it's processes?
我必须显示包含大量图像和视频的各种文件夹,但是当我单击文件夹时加载需要几秒钟,这似乎是滞后或挂起...
我想先打开视图控制器,然后显示加载过程....
怎么做 ???
在 viewWillAppear()
方法中而不是在 viewDidLoad()
方法中获取数据。
您可以使用 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.
您可以在 viewDidAppear()
方法中获取您的 data/media 并在 viewDidLoad()
方法中开始为您的加载指示器设置动画。
如果您在 viewWillAppear()
中加载数据,那么您的 viewController
需要几秒钟的时间。
您可以在创建视图后调用您的获取数据函数。 viewDidAppear() 方法在您创建视图后起作用,而且,只要您创建的视图在屏幕上可见,此方法就会起作用,因此它不可能是每种情况的最佳解决方案。这意味着,您的数据可能会被不必要地获取。例如,只要您更改视图控制器并再次返回该屏幕或切换您的应用程序或您的应用程序出现在前台,viewDidAppear() 方法就会起作用。
因此,使用 dispatchQueue 或 SDWebImage 库可能是您的答案。
你可以像这样在后台加载数据
DispatchQueue.global(qos: .background).async {
// load data here
}
之后需要在主线程
中加载UI
DispatchQueue.main.sync {
// show data here
}
我必须显示包含大量图像和视频的各种文件夹,但是当我单击文件夹时加载需要几秒钟,这似乎是滞后或挂起...
我想先打开视图控制器,然后显示加载过程.... 怎么做 ???
在 viewWillAppear()
方法中而不是在 viewDidLoad()
方法中获取数据。
您可以使用 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.
您可以在 viewDidAppear()
方法中获取您的 data/media 并在 viewDidLoad()
方法中开始为您的加载指示器设置动画。
如果您在 viewWillAppear()
中加载数据,那么您的 viewController
需要几秒钟的时间。
您可以在创建视图后调用您的获取数据函数。 viewDidAppear() 方法在您创建视图后起作用,而且,只要您创建的视图在屏幕上可见,此方法就会起作用,因此它不可能是每种情况的最佳解决方案。这意味着,您的数据可能会被不必要地获取。例如,只要您更改视图控制器并再次返回该屏幕或切换您的应用程序或您的应用程序出现在前台,viewDidAppear() 方法就会起作用。
因此,使用 dispatchQueue 或 SDWebImage 库可能是您的答案。
你可以像这样在后台加载数据
DispatchQueue.global(qos: .background).async {
// load data here
}
之后需要在主线程
中加载UIDispatchQueue.main.sync {
// show data here
}