applicationDidFinishLaunching:withOptions:
请记住,在方法返回之前,UI 中不会显示任何视图。您不能设置 aUIActivityIndicatorView
并期望它立即显示。在当前运行循环完成之前,iOS 不会更新 UI。从表面上看,您Default.png
正在执行期间显示,applicationDidFinishLaunching:withOptions:
并且在该方法完成之前您rootViewController
不会接管 UI。
UIActivityIndicatorView
如果您希望向Default.png
用户显示应用程序正在启动,那么您可以执行以下操作:
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]];
spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
spinner.frame = CGRectMake(0.0, 0.0, 60.0, 60.0);
spinner.center = CGPointMake(imageView.center.x, imageView.center.y);
spinner.alpha = 1.0;
spinner.layer.shadowColor = [UIColor grayColor].CGColor;
spinner.layer.shadowRadius = 1;
spinner.layer.shadowOpacity = 0.5;
spinner.layer.shadowOffset = CGSizeMake(0, 1);
[spinner startAnimating];
[imageView addSubview:spinner];
[self.window addSubview:imageView];
[self.window makeKeyAndVisible];
dispatch_async(dispatch_get_main_queue(), ^{
// The rest of your method here
// Be sure to remove the UIImageView from the window when the processing is complete.
});
这样,applicationDidFinishLaunching:withOptions:
将控制权返回给 iOS 并显示视图。一旦你加载了你的rootViewController
,你可以imageView
从窗口中删除 。
UIActivityIndicatorView
此外,将直接添加到 不是一个好主意UIWindow
,而是应该将其添加到已经是窗口的子视图的预先存在的视图中,就像我上面演示的那样。
我希望这有帮助。