iOS实现动态的开屏广告示例代码
程序员文章站
2023-12-17 19:14:52
一、实现效果图
二、实现思路:
用一个固定的png图片左启动图,应该和广告视图需要进行动画的期初的位置一致,当启动图消失的时候,呈现出图片,实际遇到的困难是,因为广...
一、实现效果图
二、实现思路:
用一个固定的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能有所帮助,如果有疑问大家可以留言交流。