iOS延长启动页展示时间

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];
    }];
}

这里可以加个动画,比如视图从四周向中间收缩,有个渐变的效果还是不错的。

你可能感兴趣的:(iOS延长启动页展示时间)