当前位置: 移动技术网 > IT编程>移动开发>IOS > iOS实现动态的开屏广告示例代码

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

驯龙记高清下载,胡景旭,有奖明信片中奖号码

一、实现效果图

二、实现思路:

用一个固定的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能有所帮助,如果有疑问大家可以留言交流。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网