动态改变启动图标 -- 一开始想到的就是 启动图标能不能从网站获取图片在加载到app上 后来没找到方法
仔细阅读了许多博客之后发现 其实你看到的不是一张图片,而是两张
类似百度云
这是第一张
这是第二张
至于为什么要用两张?
LaunchScreen.xib或者LaunchScreen.Storyboard,只要你的app启动过,那张图片就永远的缓存在app里了,以后每次启动都会出现。 所以这地张图片是固定的
那么 显示两张要怎么做?
第一步:
获取LaunchScreen.storyboard里的UIViewController,UIViewController 的identifer是LaunchScreen
UIViewController *viewController = [[UIStoryboard storyboardWithName:@"LaunchScreen" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"LaunchScreen"]; UIView *launchView = viewController.view; UIImageView * Imageview= [[UIImageView alloc]initWithFrame:[UIScreen mainScreen].bounds]; [launchView addSubview:Imageview]; [self.view addSubview:launchView];
这一步是获取上次网络请求下来的图片,如果存在就展示该图片,如果不存在就展示本地保存的名为test的图片
NSMutableData * data = [[NSUserDefaults standardUserDefaults]objectForKey:@"imageu"]; if (data.length>0) { Imageview.image = [UIImage imageWithData:data]; }else{ Imageview.image = [UIImage imageNamed:@"Test"]; }
下面这段代码,是调用AFN下载文件的方法,异步方式下载,但是在这里异步方式下载有一个问题,就是这次下载完成的图片,下次启动时才会展示,读者可以换成同步的,但是同步下载会有时间延迟,用户体验不好,下载完图片后,将图片以二进制的形式存在本地,笔者用的是userdefault,这是不科学的,读者可以存在其他文件夹
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; NSURL *URL = [NSURL URLWithString:@"http://s16.sinaimg.cn/large/005vePOgzy70Rd3a9pJdf&690"]; NSURLRequest *request = [NSURLRequest requestWithURL:URL]; NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) { NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]]; } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) { NSLog(@"File downloaded to: %@", filePath); NSData * image = [NSData dataWithContentsOfURL:filePath]; [[NSUserDefaults standardUserDefaults]setObject:image forKey:@"imageu"]; }]; [downloadTask resume];
这段代码,可以实现第二张图片有3D的动画效果,动画结束后,进行同步的网络请求,请求的是广告页图片,之所以用同步的是因为,如果用同步的话主页面显示后,图片才会加载完成显示
[UIView animateWithDuration:6.0f delay:0.0f options:UIViewAnimationOptionBeginFromCurrentState animations:^{ //launchView.alpha = 0.0f; launchView.layer.transform = CATransform3DScale(CATransform3DIdentity, 1.5f, 1.5f, 1.0f); } completion:^(BOOL finished) { NSString * ad_imgUrl = @"http://www.uimaker.com/uploads/allimg/121217/1_121217093327_1.jpg"; AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; [BBLaunchAdMonitor showAdAtPath:ad_imgUrl onView:appDelegate.window.rootViewController.view timeInterval:5 detailParameters:@{@"carId":@(12345), @"name":@"奥迪-品质生活"}]; [launchView removeFromSuperview]; }];
BBLaunchAdMonitor
可自行百度下载