如何在显示启animation面的同时从networking服务加载数据?

我想在我的应用程序启动时从networking加载一些数据。 我已经设置了一个启animation面,并在didFinishLaunchingWithOptions我已经设置了睡眠(10)。 现在我希望在这段时间内我的应用程序调用Web服务并加载数据,但我无法做到这一点。 请帮我出来或给任何build议去做。

在睡眠期间,线程(在这种情况下是主线程)无法做任何事情。

我build议你只需显示启animation面,开始加载数据,并在所有数据加载后隐藏启animation面。

大问题!

首先,不要让主线睡觉,没有什么会在那里工作,所以这只是浪费时间。

相反,安装像更新页面一样持续运行UIScrollView,只有当您的数据已被提取时消失。

使用webservice的委托,通过这个委托你可以在AppDelegate中调用一个函数来删除Loader视图,并在获取数据时添加HOMEPAGE。

就像是,

这只是一个例子…

- (void) webserviceDidFinishLoading //write in appdelegate.m { [self.activityIndicatorView removeFromSuperView]; self.window.rootController = self.homeViewController; } 

希望这可以帮助! 🙂

嘿,队友见波纹pipe的代码..

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { splashView = [[UIImageView alloc] initWithFrame:iphoneFrame]; splashView.image = [UIImage imageNamed:@"Default"]; [self.window addSubview:splashView]; //// load you web-service here and get data. After 2 sec iphone rootview controller will display [self performSelector:@selector(loadViewIphone) withObject:nil afterDelay:2.0]; } } -(void)loadViewIphone { [splashView removeFromSuperview]; self.window.rootViewController = self.tabBarController; [self.window makeKeyAndVisible]; CATransition *animation = [CATransition animation]; [animation setDelegate:self]; [animation setType:kCATransitionFade]; [animation setDuration:0.5]; [animation setTimingFunction:[CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut]]; [[self.window layer] addAnimation:animation forKey:kAnimationKey]; } 

我希望这可以帮助你…

🙂

睡觉的主要线程,并显示很长一段时间的启animation面不是一个好主意。 遵循一个简单的技巧,你可以达到同样的目的。 我想在你的情况下,隐藏启animation面后,服务被从第一个视图控制器调用。 因此,您可以创build一个包含相同图像的模式视图,如启animation面。 并显示如下:

 SLSDummySplash *dummySplash = [self.storyboard instantiateViewControllerWithIdentifier:@"splashId"]; [self presentViewController:dummySplash animated:NO completion:nil]; 

当您完成服务调用/长时间加载事件时,请closures模态视图。

请看这里: https : //github.com/k06a/LaunchScreenViewController 。

在应用程序的第一个视图控制器出现之前显示初始视图控制器。 当您完成从网页或初始化加载数据,closures飞溅视图控制器。

在特定的时间之后睡觉或者select一个select器并不是正确的方法,因为根据互联网连接不好,你永远不知道要等多less。