App有时候会遇到首页为WebView的情况,这时候如果页面过大,加载就需要一段时间,启动页动画过后会有一段白屏显示的时间,视手机而定,可能1s左右但对用户来说体验会感觉差好多。
可以使用主线程休眠的方式延长LaunchImage的展示时间
[NSThread sleepForTimeInterval:2.0];
该方法可以延长启动页的展示时间,但是2.0s 以后webview加载Url的时候还是会有一段的白屏时间,无法很好的解决问题。
把启动页作为视图手动加载到window上,展示几秒后再从window上移除,可以以假乱真-_-^
直接上代码
- (void)showInterimImage
{
CGRect viewFrame = [UIScreen mainScreen].bounds;
CGSize viewSize = viewFrame.size;
// 仅做竖屏支持,先获取LaunchImage
NSString *viewOrientation = @"Portrait";
NSString *launchImageName = nil;
NSArray *imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"];
for (NSDictionary *dict in imagesDict)
{
CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]);
if (CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@"UILaunchImageOrientation"]])
{
launchImageName = dict[@"UILaunchImageName"];
}
}
// 当存在启动页时
if(launchImageName) {
UIImage *image = [UIImage imageNamed:launchImageName inBundle:nil compatibleWithTraitCollection:nil];
_interimView = [[UIImageView alloc] initWithFrame:viewFrame];
_interimView.image = image;
[[UIApplication sharedApplication].keyWindow addSubview:_interimView];
[self performSelector:@selector(dismissInterimView) withObject:nil afterDelay:2.0];
}
}
最后移除视图
- (void)dismissInterimView
{
[UIView animateWithDuration:0.5 animations:^{
_interimView.alpha = 0;
} completion:^(BOOL finished) {
[_interimView removeFromSuperview];
}];
}
这里可以加个动画,比如视图从四周向中间收缩,有个渐变的效果还是不错的。
网友评论