iOS实现动态的开屏广告示例代码

一、实现效果图

二、实现思路:

用一个固定的png图片左启动图,应该和广告视图需要进行动画的期初的位置一致,当启动图消失的时候,呈现出图片,实际遇到的困难是,因为广告图片是从网络请求加载的,当时把广告视图放在了请求数据的块里面,广告出现的时候会闪一下,放在外面就没事了。

三、实现示例

1.广告的头文件

// XBAdvertView.h
// scoreCount
//
// Created by 王国栋 on 15/12/22.
// Copyright © 2015年 xiaobai. All rights reserved.
// 

#import <UIKit/UIKit.h>
@protocol XBAdvertViewDelegate <NSObject>
/**
 * 图片被点击的代理
 */
-(void)adViewClick;
@end
@interface XBAdvertView : UIView 

@property (nonatomic,weak) id<XBAdvertViewDelegate> delegate; 

@property (nonatomic,strong) UIImage* adimage; 

@end 

2.广告的m文件

//
// XBAdvertView.m
// scoreCount
//
// Created by 王国栋 on 15/12/22.
// Copyright © 2015年 xiaobai. All rights reserved.
// 

#import "XBAdvertView.h"
#import "MacroDefinition.h"
#import "UIDeviceHardware.h" 

#define kScreenW [UIScreen mainScreen].bounds.size.width
#define kScreenH [UIScreen mainScreen].bounds.size.height 

#define AppViewOriginCenterY kScreenH*0.335
#define AdvertViewRatio 0.75 

#define AppViewObjCenterY (kScreenH*AdvertViewRatio+35) 

#define AppNameObjCenterY AppViewObjCenterY+30
#define AppNameOriginCenterY kScreenH+20 

#define AppImageViewW 60/0.6
#define AppImageViewH AppImageViewW 

@interface XBAdvertView() 

///**
// * 广告的图片
// */
//@property (nonatomic,strong) UIImage * advertImage;
///**
// * app图标
// */
//@property (nonatomic,strong) UIImage* appImage;
//
//@property (nonatomic,strong)UILabel * appName;
//
///**
// * 图片的URL
// */
//@property (nonatomic,strong) NSString* picURL;
//
///**
// * 代理类去处理点击的方法
// */ 

@property (nonatomic,strong) UIImageView * advertImv;
@property (nonatomic,strong) UIImageView * appImv;
@property (nonatomic,strong) UILabel * appName;
@property (nonatomic,strong) UILabel * appPinyin;
@property (nonatomic,strong) UIImage *image;
@end
@implementation XBAdvertView 

- (void)setAdimage:(UIImage *)adimage
{
 self.advertImv.image = adimage; 

 [UIView animateWithDuration:1.0 delay:0.5 options:UIViewAnimationOptionCurveEaseIn animations:^{
  UIDeviceResolution ios_Model = [UIDeviceHardware currentResolution]; //获取设备尺寸
  if (ios_Model==UIDevice_iPhoneHiRes||ios_Model==UIDevice_iPhoneStandardRes||ios_Model==UIDevice_iPhoneTallerHiRes){
   self.appImv.center = CGPointMake(self.appImv.center.x, SCREEN_HEIGHT-108+20); 

  }else{
   self.appImv.center = CGPointMake(self.appImv.center.x, SCREEN_HEIGHT-108+25); 

  }
  self.appName.center= CGPointMake(self.appName.center.x, SCREEN_HEIGHT-108+self.image.size.height/2+5+15);
  self.appImv.transform = CGAffineTransformMakeScale(0.6, 0.6);
  self.appPinyin.center = CGPointMake(self.appPinyin.center.x,SCREEN_HEIGHT-15-10);
  //self.appPinyin.frame = CGRectMake(0, CGRectGetMaxY(self.appName.frame)+5, SCREEN_WIDTH, 20);
 } completion:^(BOOL finished) { 

  //  [UIView animateWithDuration:1.0 animations:^{
  //
  //   self.advertImv.alpha=1.0f;
  //  }];
  self.advertImv.alpha=1.0f;
  [UIView animateWithDuration:3.0 animations:^{ 

   self.advertImv.alpha=1.0f; 

  } completion:^(BOOL finished) { 

   [NSThread sleepForTimeInterval:2.0]; 

   [self removeFromSuperview]; 

  }];
 }]; 

}
- (instancetype)initWithFrame:(CGRect)frame
{ 

 NSLog(@"initWithFrame");
 if (self = [super initWithFrame:frame]) { 

  //设置广告
  self.backgroundColor = [UIColor whiteColor];
  self.advertImv = [[UIImageView alloc]init];
  self.advertImv.backgroundColor = [UIColor grayColor];
  self.advertImv.contentMode=UIViewContentModeScaleToFill;
  self.advertImv.alpha = 0;//设置为透明
  [self addSubview:self.advertImv];
  //添加手势
  UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(click)];
  tap.numberOfTapsRequired=1;
  [self.advertImv addGestureRecognizer:tap]; 

  //设置app图标
  self.appImv =[[ UIImageView alloc]init];
  self.appImv.image = [UIImage imageNamed:@"iphone6p"];
  [self addSubview:self.appImv];
  //设置app 的名字
  self.appName = [[UILabel alloc]init];
  self.appName.text = @"乐校";
  self.appName.font = UIFont(18);
  self.appName.textColor = BLUE_22C4FF;
  self.appName.textAlignment=NSTextAlignmentCenter;
  [self addSubview:self.appName];
  self.appPinyin =[[UILabel alloc]init];
  self.appPinyin.textAlignment = NSTextAlignmentCenter;
  self.appPinyin.font = UIFont(13);
  self.appPinyin.textColor = BLUE_22C4FF;
  self.appPinyin.text =@"使大学生活更精彩";
  [self addSubview:self.appPinyin]; 

  //设置广告尺寸 

  UIDeviceResolution ios_Model = [UIDeviceHardware currentResolution]; //获取设备尺寸
  if (ios_Model==UIDevice_iPhoneHiRes||ios_Model==UIDevice_iPhoneStandardRes||ios_Model==UIDevice_iPhoneTallerHiRes){
   self.image = [UIImage imageNamed:@"iphone5"];
   self.appImv.frame = CGRectMake(0, 0, self.image.size.width, self.image.size.height);
  }else if (ios_Model==UIDevice_iPhone6HiRes){
   self.image = [UIImage imageNamed:@"iphone6"];
   self.appImv.frame = CGRectMake(0, 0, self.image.size.width, self.image.size.height);
  }else if (ios_Model==UIDevice_iPhone6pHiRes){
   self.image = [UIImage imageNamed:@"iphone6p"];
   self.appImv.frame = CGRectMake(0, 0, self.image.size.width, self.image.size.height);
  }
  //  self.appImv.frame = CGRectMake(0, 0, AppImageViewW, AppImageViewH);
  if (ios_Model==UIDevice_iPhoneHiRes||ios_Model==UIDevice_iPhoneStandardRes){
   self.appImv.center = CGPointMake(kScreenW/2, AppViewOriginCenterY+5);
  }else if (ios_Model==UIDevice_iPhone6HiRes){
   self.appImv.center = CGPointMake(kScreenW/2, AppViewOriginCenterY);
  }else if (ios_Model==UIDevice_iPhoneTallerHiRes||ios_Model==UIDevice_iPhone6pHiRes){
   self.appImv.center = CGPointMake(kScreenW/2, AppViewOriginCenterY);
  }
  //设置app名字的尺寸
  self.appName.frame =CGRectMake(0, 0, AppImageViewW, 30);
  self.appName.center=CGPointMake(kScreenW/2, AppNameOriginCenterY);
  //设置app拼音的尺寸
  self.appPinyin.frame =CGRectMake(0, 0, SCREEN_WIDTH, 20);
  self.appPinyin.center=CGPointMake(kScreenW/2, AppNameOriginCenterY+AppImageViewH/2);
  //设置广告尺寸
  //self.advertImv.image = adimg;
  self.advertImv.frame= CGRectMake(0, 0, kScreenW,kScreenH); 

 }
 return self;
} 

/**
 * 交给代理类处理图片点击后的按钮
 */
-(void)click
{
 if ([self.delegate respondsToSelector:@selector(adViewClick)]) { 

  [self.delegate adViewClick];
 }
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
 // Drawing code
}
*/ 

@end 
[self.view setBackgroundColor:[UIColor greenColor]]; 

 XBAdvertView * ad = [[XBAdvertView alloc]initWithFrame:[UIScreen mainScreen].bounds];
 UIImage * image = [UIImage imageNamed:@"ad.jpg"];
 ad.adimage = image;
 [self.view addSubview:ad]; 

四、总结

以上就是iOS实现动态开屏广告的全部内容了,希望对大家学习或开发iOS能有所帮助,如果有疑问大家可以留言交流。

(0)

相关推荐

  • iOS scrollview实现三屏复用循环广告

    循环广告我们在开发中已经是熟得不能再熟了,今天整理这篇scrollview三屏复用广告. 原理使用scrollview里的三个imageview分别去加载不同的图片,用少量的资源来显示大量或不确定的广告数量,不然如果用普通方法实现广告,难道10个广告用12个scrollview的contentsize去做,岂不是太浪费资源了 代码如下,实现所有数量的循环广告,当广告只有一个时,仅采用单图显示,>=2个广告时,自动采用三屏复用 这里添加图片的方式是通过网络请求,更新服务器上的广告,如果仅使用本地广

  • js 居中漂浮广告

    程序源码 复制代码 代码如下: var floatAd = {}; floatAd.getScrollTop = function(node) { var doc = node ? node.ownerDocument : document; return doc.documentElement.scrollTop || doc.body.scrollTop; }; floatAd.getScrollLeft = function(node) { var doc = node ? node.ow

  • js漂浮广告实现代码(合集经典) 符合W3C

    第一种 漂浮广告 不符合W3CJavaScript漂浮广告代码,很不错,代码精简,不过一次只有漂一个,复制就能用了.希望站长朋友喜欢. 漂浮广告 var x = 50,y = 60 var xin = true, yin = true var step = 1 var delay = 10 var obj=document.getElementById("codefans_net") function float() { var L=T=0 var R= document.body.c

  • JS实现悬浮移动窗口(悬浮广告)的特效

    js方法: 复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>    <head>        <title> New Document </title>        <meta name="Gener

  • 又一个不错的js浮动广告代码

    var Rimifon = { "Ads" : new Object, "NewFloatAd" : function(imgUrl, strLink) { var ad = document.createElement("a"); ad.DirV = true; ad.DirH = true; ad.AutoMove = true; ad.Image = new Image; ad.Seed = Math.random(); ad.Timer

  • 兼容多浏览器的JS 浮动广告[推荐]

    漂浮广告是我们经常用到的广告形式,站长的必备代码,相信你一定能用得上. JS浮动广告 img{border:0;} function addEvent(obj,evtType,func,cap){ cap=cap||false; if(obj.addEventListener){ obj.addEventListener(evtType,func,cap); return true; }else if(obj.attachEvent){ if(cap){ obj.setCapture(); re

  • iOScollectionView广告无限滚动实例(Swift实现)

    今天公司里的实习生跑过来问我一般App上广告的无限滚动是怎么实现的,刚好很久没写博客了,就决定写下了,尽量帮助那些处于刚学iOS的程序猿. 做一个小demo,大概实现效果如下图所示: 基本实现思路: 1. 在你需要放置无限滚动展示数据的地方把他的数据,在原本的基础上把你要展示的数据扩大三倍.(当然扩大两倍也是可以的,三倍的话,比较好演示) // MARK: - 设置数据源 func collectionView(_ collectionView: UICollectionView, number

  • 使用Swift实现iOScollectionView广告无限滚动效果(DEMO)

    今天公司里的实习生跑过来问我一般App上广告的无限滚动是怎么实现的,刚好很久没写博客了,就决定写下了,尽量帮助那些处于刚学iOS的程序猿. 做一个小demo,大概实现效果如下图所示: 基本实现思路: 1. 在你需要放置无限滚动展示数据的地方把他的数据,在原本的基础上把你要展示的数据扩大三倍.(当然扩大两倍也是可以的,三倍的话,比较好演示) // MARK: - 设置数据源 func collectionView(_ collectionView: UICollectionView, number

  • iOS 9 更新之Safari广告拦截器(Content Blocker)开发教程

    下面通过图文并茂的方式给大家分享下这方面的知识,具体内容如下. 相对于谷歌对广告拦截的禁止,苹果与之态度截然相反,继Mac版Safari加入广告拦截工具之后,即将到来的iOS9对Safari也引入了内容拦截插件-Content Blocker,并且开发者可以使用最新的Xcode7开发以及使用iOS 9模拟器进行调试,下面,笔者将用一个简单的实例进行讲解如何开发Content Blocker. 在使用Google搜索时,排行靠前面的几条永远都是广告项,比如搜索"iPhone6",得到的结

  • jQuery 浮动广告实现代码

    实现方法: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>浮动广

随机推荐