IOS使用Launch Screen.storyboard制作广告启动界面

来源:互联网 发布:cygwin arm linux gcc 编辑:程序博客网 时间:2024/05/16 04:32

IOS使用Launch Screen.storyboard制作广告启动界面


最近项目在做的广告sdk,刚好自己需要去了解这个实现启动图加载广告这个功能,大家应该都了解,之前Xcode 6是LaunchScreen.xib来当作启动视图,不过到了Xcode 7就变成了Launch Screen.storyboard,其实这两个没有多大的区别,以下我就采用Xcode 7提供的LaunchScreen.storyboard 来实现这个功能,现在把自己经验和代码分享出来。

主要思路

  1. 获取Launch Screen.storyboard
  2. 通过使用storyborardID去获取启动视图viewcontroller
  3. 获取启动viewController的视图view
  4. 之后把视图view添加到window中
  5. 最后就是新建一个图片贴在视图view中
  6. 做个定时触发处理

废话不多说啦,直接贴代码出来:

AppDelegate.m中的代码//获取LaunchScreen.storyboradUIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Launch Screen" bundle:nil];//通过使用storyborardID去获取启动页viewcontrollerUIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"LaunchScreen"];//获取viewController的视图self.view = viewController.view;//把视图添加到window[self.window addSubview:self.view];self.launchView = [[UIImageView alloc] initWithFrame:self.window.frame];[self.launchView setImage:[UIImage imageNamed:@"launch.jpg"]];//这边图片可以做网络请求加载图片、视频动画或者其他自定义的引导页[self.view addSubview:self.launchView];//将图片视图推送到前面[self.window bringSubviewToFront:self.launchView];//设置3秒定时触发[NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(colseLaunchScreen) userInfo:nil repeats:NO];- (void)colseLaunchScreen {    if (self.launchView) {        [self.launchView removeFromSuperview];        self.launchView = nil;    }    if (self.view) {        [self.view removeFromSuperview];        self.view = nil;    }}

这边也可以结合LaunchImage使用,方式也是差不多,这边就不多讲了

注意有个坑已填平了:之前我用的xcode项目中General中Main Interface 启动项目初始化的主界面storyboard,用以上方法一直看不到加载的广告,后面使用在AppDelegate代码方式去加载storyboard,就可以加载出来了,目前不清楚这个是什么问题,待研究发现,如有发现朋友,方便留言告知下,谢啦(后面经过友友们的指出,发现如果不是用代码加载storyboard,那General->Main Interface->的main.storyboard加载会新建window,跟你之前传入的window不是同一个,这个之前的就被覆盖了,导致看不到广告效果,之后我修改了方案,把window改成用window中viewController中view这要就避免代码加载stroyboard了


这里注意一下,上面这个使用storyboard启动适用ios8.0以上,但现在应用差不多都是ios7.0起,开发者为了方便适配,大多都采用launchImage启动,这种也可以使用storyboard去获取广告,完全没有问题,但在加载初始化广告肯定会消耗一点点时间这要就会出现短暂storyboard的默认页面,这个可以通过把获取rootview先隐藏,等加载完毕广告再显示出来!这要问题解决了!


如果先获取launchImage的图片可以采用Cherpak Evgeny 分享在stackflow上的一个直接读取NSBundle中的设置 即可获取当前适用的LaunchImage的办法,代码我也贴出来:

    CGSize viewSize =self.window.bounds.size;    NSString *viewOrientation =@"Portrait";//横屏请设置成 @"Landscape"    NSString *launchImage =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"]]) {            launchImage = dict[@"UILaunchImageName"];        }    }    UIImageView *launchView = [[UIImageView alloc] initWithImage:[UIImageimageNamed:launchImage]];    launchView.frame=self.window.bounds;    launchView.contentMode=UIViewContentModeScaleAspectFill;    [self.window addSubview:launchView];    [UIView animateWithDuration:2.0f delay:0.0f options:UIViewAnimationOptionBeginFromCurrentState                    animations:^{                        launchView.alpha=0.0f;                        launchView.layer.transform=CATransform3DScale(CATransform3DIdentity,1.2,1.2,1);                    }                    completion:^(BOOL finished) {                        [launchView removeFromSuperview];                    }];

以上如果有错误之处或者需要指导帮忙,可以到我博客留言

私家博客:http://soubw.com/
CSDN:http://blog.csdn.net/wx_jin

广告demo下载地址:http://download.csdn.net/detail/wx_jin/9460717

5 0
原创粉丝点击