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 来实现这个功能,现在把自己经验和代码分享出来。
主要思路
- 获取Launch Screen.storyboard
- 通过使用storyborardID去获取启动视图viewcontroller
- 获取启动viewController的视图view
- 之后把视图view添加到window中
- 最后就是新建一个图片贴在视图view中
- 做个定时触发处理
废话不多说啦,直接贴代码出来:
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
- IOS使用Launch Screen.storyboard制作广告启动界面
- IOS欢迎界面Launch Screen动态加载广告
- IOS欢迎界面Launch Screen动态加载广告
- IOS欢迎界面Launch Screen动态加载广告
- IOS欢迎界面Launch Screen动态加载广告
- iOS欢迎界面Launch Screen动态加载广告
- iOS的欢迎界面Launch Screen动态加载广告
- IOS欢迎界面Launch Screen动态加载广告
- IOS欢迎界面Launch Screen动态加载广告
- iOS开发时如何使用 Launch Screen Storyboard
- iOS launch启动界面全屏
- iOS关于storyboard、启动界面、iCon的使用
- 如何添加LaunchImage, 不使用Launch Screen做启动图
- [iOS 启动图不显示] Launch Image和Launch Screen [转]
- iOS开发-Launch Image和Launch Screen
- ios 删除Main.storyboard和 Launch.storyboard
- 使用StoryBoard做IOS UI界面跳转
- IOS—使用Storyboard实现复杂界面
- 我的2015年
- 改变badgeValue
- display.id
- 模态窗口 - showModalDialog打开窗口中获取父窗口js方法
- 矩阵、向量求导法则
- IOS使用Launch Screen.storyboard制作广告启动界面
- Linux极客命令(压缩篇)
- 某集团BI决策系统建设方案分享
- Scrapy爬虫框架笔记
- C#批量删除指定文件夹下指定文件名的所有文件夹
- log4j MDC NDC应用场景
- oozie 客户端常用命令
- cruisecontrol 持续化集成(运行bat脚本)
- 推荐一个R语言基础培训课程