欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-14 22:19:58
一、实现效果图 二、实现思路: 用一个固定的png图片左启动图,应该和广告视图需要进行动画的期初的位置一致,当启动图消失的时候,呈现出图片,实际遇到的困难是,因为广...

一、实现效果图

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

上一篇:

下一篇: