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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 检测支持的样式: alert(document.implementation.hasFeature('CSS','...
    frankisbaby阅读 153评论 0 0
  • 在这写文章是有目的的机遇,为了不在熟人面前矫情,为了对得起自己承载已久的心。放下一切,投身进入深海中,沉没,感受鱼...
    几年白光阅读 184评论 0 0