美文网首页
iOS启动加载添加广告页面

iOS启动加载添加广告页面

作者: Samson_Xu | 来源:发表于2017-05-11 13:44 被阅读0次

前言:iOSAPP启动加载时添加广告页面的功能很久之前就存在了,因为现在手上的项目和之前一个项目都没有这一需求,也就没去做。最近发现手机上面的APP几乎八成都用到了启动加载时跳出广告页面,今天上午没什么事就自己写了一个demo出来,代码很简单,在这和大家一起分享参考。


Github:看这里

思路整理:

1、向后台请求数据并进行UI展示(忽略)

2、根据后台返回数据判断加载页面

3、进入广告页面

4、返回到主页面

代码实现:

1、在程序加载完成didFinishLaunch中向后台请求数据,如果有广告数据就呈现广告数据,如果没有广告数据直接进入主页面;这一步思路和做法比较简单,我们用imageView直接加载图片进行代替,实际操作时按上面思路做即可。

2、在后台返回广告数据之后,设置rootViewController为广告页面控制器,这里我们再忽略网络请求步骤的情况下直接赋值:

LanuchViewController *vc = [[LanuchViewController alloc]init];

vc.time = 3;

vc.imgUrl = nil;

vc.url = @"http://www.baidu.com";

self.window.rootViewController = [[UINavigationController alloc]initWithRootViewController:vc];

3、在广告页面添加背景视图和跳过按钮,并添加相应的监听事件:

/**广告视图

*/

@property (nonatomic, strong) UIImageView *backImageView;

/**定时器

*/

@property (nonatomic, strong) NSTimer *timer;

/**倒计时

*/

@property (nonatomic, assign) NSInteger time;

/**跳过按钮

*/

@property (nonatomic, strong) UIButton *passBtn;

实例化控件,并添加点击事件:

_backImageView = [[UIImageView alloc]initWithFrame:self.view.bounds];

_backImageView.userInteractionEnabled = YES;

_backImageView.backgroundColor = [UIColor grayColor];

[self.view addSubview:_backImageView];

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(jumpToWebView)];

[_backImageView addGestureRecognizer:tap];

_passBtn = [MyControl buttonWithFram:CGRectMake(KScreenWidth-80, 30, 60, 30) title:[NSString stringWithFormat:@"跳过%lds",_time] imageName:nil];

_passBtn.backgroundColor = [UIColor whiteColor];

[_passBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

[_passBtn addTarget:self action:@selector(jumpToRootViewCtrl) forControlEvents:UIControlEventTouchUpInside];

_passBtn.layer.cornerRadius = 5;

_passBtn.layer.masksToBounds = YES;

[self.view addSubview:_passBtn];

添加定时器

_timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(timeCutdown) userInfo:nil repeats:YES];

NSRunLoop *loop = [NSRunLoop currentRunLoop];

[loop addTimer:_timer forMode:NSRunLoopCommonModes];

设置倒计时,计时结束是进入主页面

- (void)timeCutdown{

if (self.time > 0) {

[_passBtn setTitle:[NSString stringWithFormat:@"跳过%lds",self.time] forState:UIControlStateNormal];

self.time--;

}else{

[_timer invalidate];

[UIView animateWithDuration:1.5 animations:^{

self.view.alpha = 0;

} completion:^(BOOL finished) {

[UIApplication sharedApplication].keyWindow.rootViewController = [[UINavigationController alloc]initWithRootViewController:[[MainViewController alloc]init]];

}];

}

}

跳转到网页时,先将根试图控制器改变为主页面,之后push到网页,不加动画效果,制造视觉假象。

- (void)jumpToWebView{

[_timer invalidate];

LanuchWebViewController *vc = [[LanuchWebViewController alloc]init];

vc.url = self.url;

MainViewController *main = [[MainViewController alloc]init];

[UIApplication sharedApplication].keyWindow.rootViewController = [[UINavigationController alloc]initWithRootViewController:main];

[main.navigationController pushViewController:vc animated:NO];

}

点击跳过按钮,直接进入到主页面。点击跳转或倒计时结束时,给当前视图添加渐变透明的动画效果。

- (void)jumpToRootViewCtrl{

[_timer invalidate];

[UIView animateWithDuration:0.5 animations:^{

self.view.alpha = 0;

} completion:^(BOOL finished) {

[UIApplication sharedApplication].keyWindow.rootViewController = [[UINavigationController alloc]initWithRootViewController:[[MainViewController alloc]init]];

}];

}

给广告网页页面添加webView和进度条:

@interface LanuchWebViewController ()@property (nonatomic, strong) WKWebView *webView;

@property (nonatomic, strong) UIProgressView *progressView;

@end

WKWebView有一个estimatedProgress属性,可以获取到当前页面加载进度,我们通过KVO方式来动态获取当前加载进度

[_webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew context:nil];

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void *)context{

if ([keyPath isEqualToString:@"estimatedProgress"]) {

if ([change[@"new"] floatValue] < [change[@"old"] floatValue]) {

return;

}

[_progressView setProgress:[change[@"new"] floatValue] animated:YES];

if (_progressView.progress == 1.0) {

_progressView.hidden = YES;

[_progressView removeFromSuperview];

}

}

}

相关文章

  • iOS启动加载添加广告页面

    前言:iOSAPP启动加载时添加广告页面的功能很久之前就存在了,因为现在手上的项目和之前一个项目都没有这一需求,也...

  • 启动加载广告页面

    转载自:http://ios.jobbole.com/85556/ 思路 1.广告页加载思路。广告页的内容要实时显...

  • ios App启动加载广告页面思路

    思路: 1.广告页加载思路。广告页的内容要实时显示,在无网络状态或者网速缓慢的情况下不能延迟加载,或者等到首页出现...

  • iOS开发:启动图动画效果

    效果如图: 由于项目需要在启动图后加载广告,所以把动画加载了广告页面。 实现方法 1.在appdelegate的d...

  • iOS播放GIF图卡顿

    如题,我们项目在开屏广告中添加了GIF动画,由于启动过程中广告加载的同时也加载了首页,由于首页加载存在耗时操作,导...

  • iOS性能优化之页面加载速率

    iOS性能优化之页面加载速率 iOS性能优化之页面加载速率

  • iOS App启动页加载广告

    最近自己在练习写一个小项目 其中有一项是App启动时需要在启动完毕以后 加载一个广告页面 同时 广告页面在用户点击...

  • App 启动加载广告页面思路

    需求 很多app(如淘宝、美团等)在启动图加载完毕后,还会显示几秒的广告,一般都有个跳过按钮可以跳过这个广告,有的...

  • App启动加载广告页面思路

    很多app在启动图加载完毕后,还会显示几秒的广告,有个跳过按钮可以跳过这个广告,有的app在点击广告页之后还会进入...

  • App启动加载广告页面思路

    http://www.cocoachina.com/ios/20160614/16671.html

网友评论

      本文标题:iOS启动加载添加广告页面

      本文链接:https://www.haomeiwen.com/subject/qbfotxtx.html